diff --git a/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/onchat/MallsuiteImSocketHandler.java b/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/onchat/MallsuiteImSocketHandler.java index fe8b27dc..5d35d14b 100644 --- a/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/onchat/MallsuiteImSocketHandler.java +++ b/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/onchat/MallsuiteImSocketHandler.java @@ -51,7 +51,7 @@ public class MallsuiteImSocketHandler implements WebSocketHandler { public void afterConnectionEstablished(WebSocketSession session) throws Exception { logger.debug("connect to the websocket success......"); - String loginUserId = (String) session.getAttributes().get(Constants.WEBSOCKET_LOGINNAME); + String loginUserId = String.valueOf(session.getAttributes().get("user_id")) ; String sessionId = session.getId(); // 存储到本地会话管理 @@ -63,7 +63,7 @@ public class MallsuiteImSocketHandler implements WebSocketHandler { // 注册到分布式会话服务 Map attributes = new HashMap<>(); - attributes.put("user_id", session.getAttributes().get("user_id")); + attributes.put("user_id", String.valueOf(session.getAttributes().get("user_id"))); attributes.put("loginName", loginUserId); distributedSessionService.registerUserSession(loginUserId, sessionId, attributes); @@ -198,11 +198,14 @@ public class MallsuiteImSocketHandler implements WebSocketHandler { * 清理会话资源 */ private void cleanupSession(WebSocketSession session) { - String loginUserId = (String) session.getAttributes().get(Constants.WEBSOCKET_LOGINNAME); + String loginUserId = String.valueOf(session.getAttributes().get("user_id")) ; String sessionId = session.getId(); String groupId = (String) session.getAttributes().get(Constants.WEBSOCKET_GROUP_KEY); // 从本地管理移除 + if(localSessionManager.getUserSessions()==null){ + localSessionManager.setUserSessions(new ConcurrentHashMap<>()); + } localSessionManager.removeUserSession(loginUserId, session); if (groupId != null) { localSessionManager.removeGroupSession(groupId, session);