im问题修复
This commit is contained in:
parent
3d8a84126d
commit
e79b5727b3
@ -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<String, List<WebSocketSession>> userSessions = new ConcurrentHashMap<>();
|
||||
@Getter
|
||||
@Setter
|
||||
private ConcurrentHashMap<String, List<WebSocketSession>> userSessions;
|
||||
|
||||
// 本地存储的群组会话 (groupId -> sessions)
|
||||
private final ConcurrentHashMap<String, List<WebSocketSession>> groupSessions = new ConcurrentHashMap<>();
|
||||
private ConcurrentHashMap<String, List<WebSocketSession>> groupSessions = new ConcurrentHashMap<>();
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 添加用户会话
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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<String, List<WebSocketSession>> userSession;
|
||||
// private static Map<String, List<WebSocketSession>> 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<String, List<WebSocketSession>> userSessions=new ConcurrentHashMap<>();
|
||||
localSessionManager.setUserSessions(userSessions);
|
||||
localSessionManager.addUserSession(loginUserId, session);
|
||||
|
||||
logger.info("添加会话到本地成功:{}", localSessionManager.userSessions.values());
|
||||
logger.info("添加会话到本地成功:{}", localSessionManager.getUserSessions().values());
|
||||
|
||||
// 注册到分布式会话服务
|
||||
Map<String, Object> 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<WebSocketSession> sessions : localSessionManager.userSessions.values()) {
|
||||
for (List<WebSocketSession> sessions : localSessionManager.getUserSessions().values()) {
|
||||
for (WebSocketSession session : sessions) {
|
||||
if (session!=null&&session.isOpen()) {
|
||||
try {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user