From fa5166b1452abb4b9591848574033c1d1e8f5dc2 Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Mon, 17 Nov 2025 16:31:52 +0800 Subject: [PATCH] =?UTF-8?q?im=E5=AE=A2=E6=9C=8D=E9=94=99=E8=AF=AF=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../websocket/service/DistributedSessionService.java | 8 ++++++-- .../service/onchat/MallsuiteImSocketHandler.java | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/DistributedSessionService.java b/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/DistributedSessionService.java index 3ec3a7d9..b5618182 100644 --- a/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/DistributedSessionService.java +++ b/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/DistributedSessionService.java @@ -2,6 +2,7 @@ package com.suisung.mall.im.common.websocket.service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -13,6 +14,8 @@ import java.util.stream.Collectors; public class DistributedSessionService { private static final Logger log = LoggerFactory.getLogger(DistributedSessionService.class); + + @Lazy @Autowired private RedisTemplate redisTemplate; @@ -169,16 +172,17 @@ public class DistributedSessionService { // 获取所有服务器的用户集合 Set serverKeys = redisTemplate.keys(SERVER_USERS_KEY + "*"); List allUserIds = new ArrayList<>(); - + log.info("sserverKeys-{}", serverKeys); if (serverKeys != null) { for (String serverKey : serverKeys) { Set userIds = redisTemplate.opsForSet().members(serverKey); + log.info("userIds{}", userIds); if (userIds != null) { userIds.forEach(userIdStr -> { try { allUserIds.add(Integer.parseInt(userIdStr.toString())); } catch (NumberFormatException e) { - // 忽略格式错误的用户ID + log.info("报错:{}",e.getMessage()); } }); } 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 52078288..9d6bfcf6 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 @@ -299,10 +299,14 @@ public class MallsuiteImSocketHandler implements WebSocketHandler { * 广播在线状态到本地用户 */ private void broadcastLocalOnlineStatus(SendVO message) { - if (localSessionManager == null) { + logger.info("localSessionManager: {}", localSessionManager); + logger.info("localSessionManager.userSessions: {}", localSessionManager.userSessions); + logger.info("localSessionManager.userSessions.values: {}", localSessionManager.userSessions.values()); + if (localSessionManager == null || localSessionManager.userSessions.isEmpty()) { logger.error("localSessionManager is null, cannot broadcast online status"); return; } + // 获取本地所有用户会话 for (List sessions : localSessionManager.userSessions.values()) { for (WebSocketSession session : sessions) {