springboot中集成websocket向前端推送数据
时间: 2023-10-19 13:21:15 浏览: 115
1. 添加WebSocket依赖
在pom.xml中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2. 创建WebSocket配置类
创建一个WebSocket配置类,配置WebSocket相关的信息:
```java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
// 注册WebSocket处理器,并指定WebSocket连接路径
registry.addHandler(myHandler(), "/myHandler")
.setAllowedOrigins("*"); // 允许跨域
}
@Bean
public WebSocketHandler myHandler() {
return new MyHandler();
}
}
```
其中,MyHandler是自定义的WebSocket处理器,后面会讲到。
3. 创建WebSocket处理器
创建一个WebSocket处理器,实现WebSocketHandler接口:
```java
public class MyHandler implements WebSocketHandler {
private static final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
// 连接建立后
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session);
}
// 接收到消息后
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
// 处理消息
}
// 连接关闭后
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
sessions.remove(session);
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
// 处理异常
}
// 广播消息
public static void broadcast(String message) {
for (WebSocketSession session : sessions) {
try {
session.sendMessage(new TextMessage(message));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
其中,sessions存储所有连接的WebSocketSession对象,可以用于广播消息。
4. 向前端推送数据
在需要推送数据的地方,调用MyHandler的broadcast方法即可:
```java
MyHandler.broadcast("Hello world!");
```
这样,所有连接的WebSocket客户端都会收到消息。
5. 前端代码
在前端代码中,使用WebSocket连接到后端,并监听消息:
```javascript
var socket = new WebSocket("ws://localhost:8080/myHandler");
socket.onmessage = function(event) {
// 处理消息
};
```
注意,WebSocket连接路径需要和后端配置的一致。
阅读全文
相关推荐


















