springboot websocket消息推送
时间: 2023-11-04 10:57:20 浏览: 92
Spring Boot提供了一种简单而强大的方式来实现WebSocket消息推送。通过使用`@ServerEndpoint`注解将WebSocket服务器端点添加到您的应用程序中,可以轻松地创建一个WebSocket服务器。首先,您需要创建一个WebSocket服务器类,并用`@ServerEndpoint`注解进行标记。然后,使用`@OnOpen`、`@OnClose`和`@OnMessage`等注解来处理WebSocket的连接、关闭和消息事件。
以下是一个使用Spring Boot实现WebSocket消息推送的示例代码:
```java
@ServerEndpoint("/websocket/{uid}")
@Component
public class WebSocketServer {
private static final CopyOnWriteArraySet<WebSocketServer> webSocketServers = new CopyOnWriteArraySet<>();
private Session session;
private String uid;
@OnOpen
public void onOpen(Session session, @PathParam("uid") String uid) {
this.session = session;
this.uid = uid;
webSocketServers.add(this);
System.out.println("窗口开始监听uid:" + uid + ",当前在线人数:" + webSocketServers.size());
}
@OnClose
public void onClose() {
webSocketServers.remove(this);
System.out.println("窗口结束监听uid:" + uid + ",当前在线人数:" + webSocketServers.size());
}
@OnMessage
public void onMessage(String message) {
System.out.println("收到消息:" + message);
for (WebSocketServer server : webSocketServers) {
try {
server.session.getBasicRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
```
要启用WebSocket支持,您还需要在配置类中添加`ServerEndpointExporter`的Bean(如下所示):
```java
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
```
以上代码示例中,`@ServerEndpoint`注解将WebSocket服务器端点映射到`/websocket/{uid}`路径,并且`@Component`注解将此类声明为Spring组件。`onOpen`方法在连接建立时被调用,`onClose`方法在连接关闭时被调用,`onMessage`方法在接收到客户端消息时被调用。`webSocketServers`集合用于跟踪当前在线的WebSocket服务器。
您可以通过调用`session.getBasicRemote().sendText(message)`将消息推送到所有连接的客户端。
阅读全文