From dedacd79c93f8ef95e0cb986f5e7fbd27ddbd907 Mon Sep 17 00:00:00 2001
From: zhaowenxuan <chacca165@163.com>
Date: 星期四, 03 七月 2025 09:12:49 +0800
Subject: [PATCH] 2025-07-03

---
 ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java |   33 +++++++++++++++++++++------------
 1 files changed, 21 insertions(+), 12 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
index e1efb33..5bdaba0 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java
@@ -1,6 +1,7 @@
 package com.ltkj.web.websocket;
 
 import cn.hutool.json.JSONUtil;
+import com.ltkj.common.core.domain.model.LoginUser;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.web.socket.CloseStatus;
@@ -9,7 +10,10 @@
 import org.springframework.web.socket.handler.TextWebSocketHandler;
 import redis.clients.jedis.util.SafeEncoder;
 
+import java.util.ArrayList;
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
 
 /**
  * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃
@@ -20,20 +24,19 @@
 @Component
 public class WebSockerManager extends TextWebSocketHandler {
 
-    private static final ConcurrentHashMap<Long, ClientSessionInfo> userSessions = new ConcurrentHashMap<>();
+    public final ConcurrentHashMap<String, 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;
+        LoginUser loginUser = (LoginUser) session.getAttributes().get("user");
+        WebSocketClientInfo info = new WebSocketClientInfo();
+        info.setUid(Long.parseLong(loginUser.getUserId()));
+        info.setHospId(loginUser.getHospName());
+        return info;
+//        WebSocketClientInfo clientInfo = new WebSocketClientInfo();
+//        clientInfo.setUid(123L);
+//        clientInfo.setHospId("hosp");
+//        return clientInfo;
     }
 
     @Override
@@ -41,8 +44,12 @@
         WebSocketClientInfo clientInfo = getUser(session);
 //        userSessions.put(clientInfo.getUid(), new ClientSessionInfo(session, clientInfo.getHospId()));
         sessions.put(session.getId(),clientInfo);
-        log.info(JSONUtil.toJsonStr(sessions));
+        ClientSessionInfo sessionInfo = new ClientSessionInfo();
+        sessionInfo.setSession(session);
+        sessionInfo.setCode(clientInfo.getHospId());
+        userSessions.put(String.valueOf(clientInfo.getUid()), sessionInfo);
         session.sendMessage(new TextMessage("杩炴帴鎴愬姛"));
+        log.info("[WebSocket] 鍦ㄧ嚎鍒楄〃UserIds\n{}",JSONUtil.toJsonStr(new ArrayList<>(userSessions.keySet())));
     }
 
     @Override
@@ -62,5 +69,7 @@
     @Override
     public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
         log.info("[WebSocket] 杩炴帴鍏抽棴: " + status);
+        WebSocketClientInfo clientInfo = sessions.get(session.getId());
+        userSessions.remove(String.valueOf(clientInfo.getUid()));
     }
 }

--
Gitblit v1.8.0