im问题修复-获取不到用户

This commit is contained in:
liyj 2025-11-18 15:55:38 +08:00
parent e97416feeb
commit 53cc5a0d76

View File

@ -51,7 +51,7 @@ public class MallsuiteImSocketHandler implements WebSocketHandler {
public void afterConnectionEstablished(WebSocketSession session) throws Exception { public void afterConnectionEstablished(WebSocketSession session) throws Exception {
logger.debug("connect to the websocket success......"); 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(); String sessionId = session.getId();
// 存储到本地会话管理 // 存储到本地会话管理
@ -63,7 +63,7 @@ public class MallsuiteImSocketHandler implements WebSocketHandler {
// 注册到分布式会话服务 // 注册到分布式会话服务
Map<String, Object> attributes = new HashMap<>(); Map<String, Object> 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); attributes.put("loginName", loginUserId);
distributedSessionService.registerUserSession(loginUserId, sessionId, attributes); distributedSessionService.registerUserSession(loginUserId, sessionId, attributes);
@ -198,11 +198,14 @@ public class MallsuiteImSocketHandler implements WebSocketHandler {
* 清理会话资源 * 清理会话资源
*/ */
private void cleanupSession(WebSocketSession session) { 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 sessionId = session.getId();
String groupId = (String) session.getAttributes().get(Constants.WEBSOCKET_GROUP_KEY); String groupId = (String) session.getAttributes().get(Constants.WEBSOCKET_GROUP_KEY);
// 从本地管理移除 // 从本地管理移除
if(localSessionManager.getUserSessions()==null){
localSessionManager.setUserSessions(new ConcurrentHashMap<>());
}
localSessionManager.removeUserSession(loginUserId, session); localSessionManager.removeUserSession(loginUserId, session);
if (groupId != null) { if (groupId != null) {
localSessionManager.removeGroupSession(groupId, session); localSessionManager.removeGroupSession(groupId, session);