springboot 整合websocket数据更新推送到前端项目案例
时间: 2023-07-27 07:34:12 浏览: 182
Springboot+Websocket示例
以下是一个简单的Spring Boot整合WebSocket实现数据更新推送到前端的项目案例。
1. 创建Spring Boot项目
使用Spring Initializr创建一个新的Spring Boot项目,添加如下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2. 创建WebSocket处理器类
创建一个WebSocket处理器类,用于处理WebSocket消息。
```
@Component
public class MyWebSocketHandler extends TextWebSocketHandler {
private List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) {
sessions.add(session);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
// 处理WebSocket消息
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
sessions.remove(session);
}
public void sendMessage(String message) {
for (WebSocketSession session : sessions) {
try {
session.sendMessage(new TextMessage(message));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在上面的代码中,`afterConnectionEstablished()`方法会在建立WebSocket连接时被调用,`handleTextMessage()`方法会在接收到WebSocket消息时被调用,`afterConnectionClosed()`方法会在WebSocket连接关闭时被调用。`sendMessage()`方法用于向所有连接的WebSocket客户端发送消息。
3. 配置WebSocket
创建一个WebSocket配置类,用于配置WebSocket相关的内容。
```
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Autowired
private MyWebSocketHandler myWebSocketHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myWebSocketHandler, "/myWebSocketHandler").setAllowedOrigins("*");
}
}
```
在上面的代码中,`registerWebSocketHandlers()`方法用于注册WebSocket处理器,`myWebSocketHandler()`方法返回我们创建的WebSocket处理器。
4. 发送消息到前端
在需要发送消息的地方,注入WebSocket处理器,调用`sendMessage()`方法发送消息到前端。
```
@Autowired
private MyWebSocketHandler myWebSocketHandler;
public void sendWebSocketMessage(String message) {
myWebSocketHandler.sendMessage(message);
}
```
5. 编写前端页面
在前端页面中添加WebSocket连接代码和接收WebSocket消息的代码。
```
var socket = new WebSocket("ws://" + window.location.host + "/myWebSocketHandler");
socket.onopen = function() {
console.log("WebSocket连接已建立。");
};
socket.onmessage = function(event) {
console.log("接收到WebSocket消息:" + event.data);
};
socket.onclose = function(event) {
console.log("WebSocket连接已关闭。");
};
```
以上就是一个简单的Spring Boot整合WebSocket实现数据更新推送到前端的项目案例。
阅读全文