From 0892d843cd394f383ff50f480f7f22f2ec3829bc Mon Sep 17 00:00:00 2001
From: zhaowenxuan <chacca165@163.com>
Date: 星期五, 27 六月 2025 20:24:45 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java |   66 +++++++++++++++++++++++++++++++++
 1 files changed, 66 insertions(+), 0 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java b/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java
new file mode 100644
index 0000000..e1efb33
--- /dev/null
+++ b/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java
@@ -0,0 +1,66 @@
+package com.ltkj.web.websocket;
+
+import cn.hutool.json.JSONUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+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 redis.clients.jedis.util.SafeEncoder;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃
+ * @Author: zhaowenxuan
+ * @Date: 2025/6/27 14:59
+ */
+@Slf4j
+@Component
+public class WebSockerManager extends TextWebSocketHandler {
+
+    private static final ConcurrentHashMap<Long, ClientSessionInfo> userSessions = new ConcurrentHashMap<>();
+    private static final ConcurrentHashMap<String, WebSocketClientInfo> sessions = new ConcurrentHashMap<>();
+
+    private WebSocketClientInfo getUser(WebSocketSession session) {
+//        long uid = Long.parseLong(session.getAttributes().get("uid").toString());
+//        String hospId = session.getAttributes().get("hospId").toString();
+//        WebSocketClientInfo info = new WebSocketClientInfo();
+//        info.setUid(uid);
+//        info.setHospId(hospId);
+//        return info;
+        WebSocketClientInfo clientInfo = new WebSocketClientInfo();
+        clientInfo.setUid(123L);
+        clientInfo.setHospId("hosp");
+        return clientInfo;
+    }
+
+    @Override
+    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
+        WebSocketClientInfo clientInfo = getUser(session);
+//        userSessions.put(clientInfo.getUid(), new ClientSessionInfo(session, clientInfo.getHospId()));
+        sessions.put(session.getId(),clientInfo);
+        log.info(JSONUtil.toJsonStr(sessions));
+        session.sendMessage(new TextMessage("杩炴帴鎴愬姛"));
+    }
+
+    @Override
+    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
+        String payload = message.getPayload();
+        // 澶勭悊 ping/pong
+        if ("ping".equals(payload)) {
+            session.sendMessage(new TextMessage("pong"));
+            return;
+        }
+        String sessionId = session.getId();
+        WebSocketClientInfo clientInfo = sessions.get(sessionId);
+        log.info("[WebSocket] 鏀跺埌瀹㈡埛绔秷鎭� userId:{} msg: {}",clientInfo.getUid(),payload);
+        session.sendMessage(new TextMessage("[WebSocket] 鏀跺埌瀹㈡埛绔秷鎭� msg: " + payload));
+    }
+
+    @Override
+    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
+        log.info("[WebSocket] 杩炴帴鍏抽棴: " + status);
+    }
+}

--
Gitblit v1.8.0