From aed7687a91cf2c33e3d540dd3dddf1ff74cc1499 Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Tue, 13 Jan 2026 10:31:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0websocket=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/nu/websocket/SdWebsocket.java | 35 +++++++++++++------ 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/websocket/SdWebsocket.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/websocket/SdWebsocket.java index 5f4693d1..ec05e6fd 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/websocket/SdWebsocket.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/websocket/SdWebsocket.java @@ -34,14 +34,16 @@ public class SdWebsocket { SdWebsocket.sysUserAPI = sysUserAPI; } - /**线程安全Map*/ + /** + * 线程安全Map + */ private static ConcurrentHashMap sessionPool = new ConcurrentHashMap<>(); @OnOpen public void onOpen(Session session, @PathParam(value = "userId") String userId) { try { sessionPool.put(userId, session); - log.info("【系统 SdWebsocket】有新的连接,总数为:"+sessionPool.size()); + log.info("【系统 SdWebsocket】有新的连接,总数为:" + sessionPool.size()); broadcastUserList(); } catch (Exception e) { @@ -52,7 +54,7 @@ public class SdWebsocket { public void onClose(@PathParam("userId") String userId) { try { sessionPool.remove(userId); - log.info("【系统 SdWebsocket】连接断开,总数为:"+sessionPool.size()); + log.info("【系统 SdWebsocket】连接断开,总数为:" + sessionPool.size()); broadcastUserList(); } catch (Exception e) { @@ -65,16 +67,16 @@ public class SdWebsocket { */ @OnMessage public void onMessage(String message, @PathParam(value = "userId") String userId) { - if(!"ping".equals(message) && !WebsocketConst.CMD_CHECK.equals(message)){ - log.info("【系统 SdWebsocket】收到客户端消息:"+message); - }else{ - log.info("【系统 SdWebsocket】收到客户端消息:"+message); + if (!"ping".equals(message) && !WebsocketConst.CMD_CHECK.equals(message)) { + log.info("【系统 SdWebsocket】收到客户端消息:" + message); + } else { + log.info("【系统 SdWebsocket】收到客户端消息:" + message); JSONObject json; try { json = JSON.parseObject(message); this.sendMessage(userId, "ping"); } catch (Exception e) { - log.warn("【SdWebsocket】收到不合法的消息:"+message); + log.warn("【SdWebsocket】收到不合法的消息:" + message); return; } } @@ -98,7 +100,7 @@ public class SdWebsocket { * @param message */ public void sendMessage(String message) { - log.info("【系统 SdWebsocket】广播消息:"+message); + log.info("【系统 SdWebsocket】广播消息:" + message); for (Session session : sessionPool.values()) { session.getAsyncRemote().sendText(message); } @@ -125,6 +127,19 @@ public class SdWebsocket { log.info("【系统 SdWebsocket】当前在线用户: [{}] 共 {} 人", userList.toString(), sessionPool.size()); Session session = sessionPool.get(userId); + + if (session != null) { + log.info("【系统 SdWebsocket】获取到用户 {} 的 session: id={}, isOpen={}, maxIdleTimeout={}ms,requestURI={}, queryString={}", + userId, + session.getId(), + session.isOpen(), + session.getMaxIdleTimeout(), + session.getRequestURI(), + session.getQueryString()); + } else { + log.info("【系统 SdWebsocket】未找到用户 {} 的 session,sessionPool 中不存在该用户", userId); + } + if (session != null && session.isOpen()) { session.getAsyncRemote().sendText(message); log.debug("【系统 SdWebsocket】消息发送成功"); @@ -150,7 +165,7 @@ public class SdWebsocket { // 构建消息:type固定为userList,users是当前所有用户ID JSONObject msg = new JSONObject(); msg.put("type", "userList"); - msg.put("users",sysUserAPI.queryByEmployees(String.join(",", sessionPool.keySet()))); + msg.put("users", sysUserAPI.queryByEmployees(String.join(",", sessionPool.keySet()))); msg.put("timestamp", System.currentTimeMillis()); sendMessage(msg.toJSONString());