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