diff --git a/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/LocalSessionManager.java b/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/LocalSessionManager.java index 0eb94b99..4e7ab0e6 100644 --- a/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/LocalSessionManager.java +++ b/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/LocalSessionManager.java @@ -1,5 +1,7 @@ package com.suisung.mall.im.common.websocket.service; import com.suisung.mall.im.pojo.vo.SendVO; +import lombok.Getter; +import lombok.Setter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @@ -19,10 +21,14 @@ public class LocalSessionManager { private static final Logger log = LoggerFactory.getLogger(LocalSessionManager.class); // 本地存储的用户会话 (userId -> sessions) - public final ConcurrentHashMap> userSessions = new ConcurrentHashMap<>(); + @Getter + @Setter + private ConcurrentHashMap> userSessions; // 本地存储的群组会话 (groupId -> sessions) - private final ConcurrentHashMap> groupSessions = new ConcurrentHashMap<>(); + private ConcurrentHashMap> groupSessions = new ConcurrentHashMap<>(); + + /** * 添加用户会话 diff --git a/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/RabbitMQManager.java b/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/RabbitMQManager.java index 5d2e32ad..fcc1d3e5 100644 --- a/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/RabbitMQManager.java +++ b/mall-im/src/main/java/com/suisung/mall/im/common/websocket/service/RabbitMQManager.java @@ -1,6 +1,5 @@ package com.suisung.mall.im.common.websocket.service; -import com.suisung.mall.im.common.websocket.service.onchat.MallsuiteImSocketHandler; import com.suisung.mall.im.common.websocket.utils.ServerIdGenerator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 9d6bfcf6..5d5f672b 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 @@ -3,7 +3,6 @@ package com.suisung.mall.im.common.websocket.service.onchat; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.IdUtil; import cn.hutool.json.JSONUtil; -import com.suisung.mall.common.feignService.AccountService; import com.suisung.mall.im.common.websocket.service.DistributedMessageService; import com.suisung.mall.im.common.websocket.service.DistributedSessionService; import com.suisung.mall.im.common.websocket.service.LocalSessionManager; @@ -14,15 +13,15 @@ import com.suisung.mall.im.pojo.vo.ReceiveDTO; import com.suisung.mall.im.pojo.vo.SendVO; import com.suisung.mall.im.pojo.vo.ToDTO; import com.suisung.mall.im.service.ChatHistoryService; -import com.suisung.mall.im.service.LayGroupService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.socket.*; - -import javax.annotation.Resource; import java.io.IOException; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; public class MallsuiteImSocketHandler implements WebSocketHandler { @@ -34,23 +33,18 @@ public class MallsuiteImSocketHandler implements WebSocketHandler { // private static Map> userSession; // private static Map> groupSession; - @Resource + @Autowired private DistributedSessionService distributedSessionService; - @Resource + @Autowired private DistributedMessageService distributedMessageService; - @Resource + @Autowired private LocalSessionManager localSessionManager; - @Resource + @Autowired private ChatHistoryService chatHistoryService; - @Resource - private LayGroupService layGroupService; - - @Resource - private AccountService accountService; //用户上线后触发 @Override @@ -61,9 +55,11 @@ public class MallsuiteImSocketHandler implements WebSocketHandler { String sessionId = session.getId(); // 存储到本地会话管理 + ConcurrentHashMap> userSessions=new ConcurrentHashMap<>(); + localSessionManager.setUserSessions(userSessions); localSessionManager.addUserSession(loginUserId, session); - logger.info("添加会话到本地成功:{}", localSessionManager.userSessions.values()); + logger.info("添加会话到本地成功:{}", localSessionManager.getUserSessions().values()); // 注册到分布式会话服务 Map attributes = new HashMap<>(); @@ -300,15 +296,15 @@ public class MallsuiteImSocketHandler implements WebSocketHandler { */ private void broadcastLocalOnlineStatus(SendVO message) { 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.info("localSessionManager.userSessions: {}", localSessionManager.getUserSessions()); + logger.info("localSessionManager.userSessions.values: {}", localSessionManager.getUserSessions().values()); + if (localSessionManager == null || localSessionManager.getUserSessions().isEmpty()) { logger.error("localSessionManager is null, cannot broadcast online status"); return; } // 获取本地所有用户会话 - for (List sessions : localSessionManager.userSessions.values()) { + for (List sessions : localSessionManager.getUserSessions().values()) { for (WebSocketSession session : sessions) { if (session!=null&&session.isOpen()) { try {