im分布式测试方案-单机测试
This commit is contained in:
parent
ac3b9216d8
commit
c8699f0bf2
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user