|
|
@@ -0,0 +1,40 @@
|
|
|
+package com.sqx.common;
|
|
|
+
|
|
|
+import org.springframework.web.socket.CloseStatus;
|
|
|
+import org.springframework.web.socket.TextMessage;
|
|
|
+import org.springframework.web.socket.WebSocketSession;
|
|
|
+import org.springframework.web.socket.handler.TextWebSocketHandler;
|
|
|
+
|
|
|
+import java.util.concurrent.CopyOnWriteArraySet;
|
|
|
+
|
|
|
+public class MyWebSocketHandler extends TextWebSocketHandler {
|
|
|
+ // 存储所有在线会话
|
|
|
+ private static final CopyOnWriteArraySet<WebSocketSession> sessions = new CopyOnWriteArraySet<>();
|
|
|
+
|
|
|
+ // 连接建立时触发
|
|
|
+ @Override
|
|
|
+ public void afterConnectionEstablished(WebSocketSession session) throws Exception {
|
|
|
+ sessions.add(session);
|
|
|
+ System.out.println("新连接加入,当前在线:" + sessions.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 收到消息时触发
|
|
|
+ @Override
|
|
|
+ protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
|
|
|
+ String receivedMsg = message.getPayload();
|
|
|
+ System.out.println("收到消息:" + receivedMsg);
|
|
|
+ // 广播消息给所有在线客户端
|
|
|
+ for (WebSocketSession s : sessions) {
|
|
|
+ if (s.isOpen()) {
|
|
|
+ s.sendMessage(new TextMessage("服务器回复:" + receivedMsg));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 连接关闭时触发
|
|
|
+ @Override
|
|
|
+ public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
|
|
|
+ sessions.remove(session);
|
|
|
+ System.out.println("连接关闭,当前在线:" + sessions.size());
|
|
|
+ }
|
|
|
+}
|