im分布式测试方案-单机测试

This commit is contained in:
liyj 2025-11-20 09:09:14 +08:00
parent e7fa450f1c
commit efe4d0124c
2 changed files with 32 additions and 25 deletions

View File

@ -1,4 +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.pojo.vo.SendVO;
import lombok.Getter;
import lombok.Setter;
@ -28,28 +29,8 @@ public class LocalSessionManager {
// 本地存储的群组会话 (groupId -> sessions)
private ConcurrentHashMap<String, List<WebSocketSession>> groupSessions = new ConcurrentHashMap<>();
/**
* 添加用户会话
*/
public void addUserSession(String userId, WebSocketSession session) {
if (userId == null || session == null) {
log.info("添加用户会话失败: 参数为空");
return;
}
userSessions.compute(userId, (key, existingSessions) -> {
if (existingSessions == null) {
existingSessions = new CopyOnWriteArrayList<>();
}
// if (!existingSessions.contains(session)) {
// existingSessions.add(session);
// }
existingSessions.add(session);
return existingSessions;
});
log.info("添加用户会话成功: userId={}, sessionId={}", userId, session.getId());
public LocalSessionManager() {
this.userSessions = MallsuiteImSocketHandler.userSessions;
}
/**

View File

@ -22,6 +22,7 @@ import org.springframework.web.socket.*;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
public class MallsuiteImSocketHandler implements WebSocketHandler {
@ -33,6 +34,8 @@ public class MallsuiteImSocketHandler implements WebSocketHandler {
// private static Map<String, List<WebSocketSession>> userSession;
// private static Map<String, List<WebSocketSession>> groupSession;
public static ConcurrentHashMap<String, List<WebSocketSession>> userSessions;
@Autowired
private DistributedSessionService distributedSessionService;
@ -45,6 +48,9 @@ public class MallsuiteImSocketHandler implements WebSocketHandler {
@Autowired
private ChatHistoryService chatHistoryService;
static {
userSessions=new ConcurrentHashMap<>();
}
//用户上线后触发
@Override
@ -55,9 +61,7 @@ public class MallsuiteImSocketHandler implements WebSocketHandler {
String sessionId = session.getId();
// 存储到本地会话管理
ConcurrentHashMap<String, List<WebSocketSession>> userSessions=new ConcurrentHashMap<>();
localSessionManager.setUserSessions(userSessions);
localSessionManager.addUserSession(loginUserId, session);
this.addUserSession(loginUserId, session);
logger.info("添加会话到本地成功:{}", localSessionManager.getUserSessions().values());
@ -334,4 +338,26 @@ public class MallsuiteImSocketHandler implements WebSocketHandler {
logger.debug("向 {} 个在线用户发送消息", onlineUserIds.size());
}
/**
* 添加用户会话
*/
public void addUserSession(String userId, WebSocketSession session) {
if (userId == null || session == null) {
logger.info("添加用户会话失败: 参数为空");
return;
}
userSessions.compute(userId, (key, existingSessions) -> {
if (existingSessions == null) {
existingSessions = new CopyOnWriteArrayList<>();
}
// if (!existingSessions.contains(session)) {
// existingSessions.add(session);
// }
existingSessions.add(session);
return existingSessions;
});
logger.info("添加用户会话成功: userId={}, sessionId={}", userId, session.getId());
}
}