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