Your Name 8 月之前
父節點
當前提交
2b27562ac9
共有 1 個文件被更改,包括 40 次插入0 次删除
  1. 40 0
      src/main/java/com/sqx/common/MyWebSocketHandler.java

+ 40 - 0
src/main/java/com/sqx/common/MyWebSocketHandler.java

@@ -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());
+    }
+}