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

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

View File

@ -1,4 +1,5 @@
package com.suisung.mall.im.common.websocket.service; 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 com.suisung.mall.im.pojo.vo.SendVO;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -28,28 +29,8 @@ public class LocalSessionManager {
// 本地存储的群组会话 (groupId -> sessions) // 本地存储的群组会话 (groupId -> sessions)
private ConcurrentHashMap<String, List<WebSocketSession>> groupSessions = new ConcurrentHashMap<>(); private ConcurrentHashMap<String, List<WebSocketSession>> groupSessions = new ConcurrentHashMap<>();
public LocalSessionManager() {
this.userSessions = MallsuiteImSocketHandler.userSessions;
/**
* 添加用户会话
*/
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());
} }
/** /**

View File

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