init
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
package com.timeline.user.ws;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.messaging.simp.SimpMessagingTemplate;
|
||||
import org.springframework.messaging.simp.user.SimpUser;
|
||||
import org.springframework.messaging.simp.user.SimpUserRegistry;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* WebSocket 会话注册表,用于调试和管理用户会话
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class WebSocketSessionRegistry {
|
||||
|
||||
private final SimpUserRegistry userRegistry;
|
||||
private final SimpMessagingTemplate messagingTemplate;
|
||||
|
||||
public WebSocketSessionRegistry(SimpUserRegistry userRegistry, SimpMessagingTemplate messagingTemplate) {
|
||||
this.userRegistry = userRegistry;
|
||||
this.messagingTemplate = messagingTemplate;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有已连接的用户
|
||||
*/
|
||||
public Set<String> getConnectedUsers() {
|
||||
return userRegistry.getUsers().stream()
|
||||
.map(SimpUser::getName)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查用户是否在线
|
||||
*/
|
||||
public boolean isUserOnline(String userId) {
|
||||
SimpUser user = userRegistry.getUser(userId);
|
||||
boolean online = user != null;
|
||||
log.info("用户 {} 在线状态: {}", userId, online);
|
||||
if (online) {
|
||||
log.info("用户 {} 的会话数: {}", userId, user.getSessions().size());
|
||||
}
|
||||
return online;
|
||||
}
|
||||
|
||||
/**
|
||||
* 打印所有在线用户
|
||||
*/
|
||||
public void printOnlineUsers() {
|
||||
Set<String> users = getConnectedUsers();
|
||||
log.info("当前在线用户数: {}", users.size());
|
||||
users.forEach(userId -> log.info("在线用户: {}", userId));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user