Spring boot 弹簧打开腹板锁连接
我使用SpringBootWebSocket来启用我的SpringBoot2微服务来处理Websocket连接 我的配置:Spring boot 弹簧打开腹板锁连接,spring-boot,spring-websocket,Spring Boot,Spring Websocket,我使用SpringBootWebSocket来启用我的SpringBoot2微服务来处理Websocket连接 我的配置: @Configuration @EnableWebSocket public class WsConfig implements WebSocketConfigurer { @Autowired WebSocketHandler webSocketHandler; @Override public void registerWebSock
@Configuration
@EnableWebSocket
public class WsConfig implements WebSocketConfigurer {
@Autowired
WebSocketHandler webSocketHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
DefaultHandshakeHandler handshakeHandler = new DefaultHandshakeHandler();
handshakeHandler.setSupportedProtocols(HANDSHAKE_PROTOCOL);
registry.addHandler(webSocketHandler, WS_HANDLER_PATH + WILDCARD)
.setAllowedOrigins("*")
.setHandshakeHandler(handshakeHandler);
}
}
我的客户可以通过Websocket连接到我的服务。我正在实现WebSocketHandler
接口来处理消息和日志连接
现在我的问题是:有没有一种方法可以显示所有当前的websocket用户/会话?
我试图使用SimpUserRegistry:
@Configuration
public class UserConfig {
final private SimpUserRegistry userRegistry = new DefaultSimpUserRegistry();
@Bean
public SimpUserRegistry userRegistry() {
return userRegistry;
}
}
并通过REST端点显示用户
@RestController
public class WebSocketManager {
private final SimpUserRegistry userRegistry;
public WebSocketManager(SimpUserRegistry userRegistry) {
this.userRegistry = userRegistry;
}
@GetMapping(path = "/users")
public List<String> getConnectedUsers() {
userRegistry.getUsers().stream()
.map(SimpUser::getName)
.forEach(System.out::println);
System.out.println("Users " + userRegistry.getUsers());
System.out.println("UsersCount " + userRegistry.getUserCount());
return this.userRegistry
.getUsers()
.stream()
.map(SimpUser::getName)
.collect(Collectors.toList());
}
}
@RestController
公共类WebSocketManager{
私有最终SimpUserRegistry用户注册表;
公共WebSocketManager(SimpUserRegistry用户注册表){
this.userRegistry=userRegistry;
}
@GetMapping(路径=“/users”)
公共列表getConnectedUsers(){
userRegistry.getUsers().stream()
.map(SimpUser::getName)
.forEach(System.out::println);
System.out.println(“Users”+userRegistry.getUsers());
System.out.println(“userscont”+userRegistry.getUserCount());
返回此.userRegistry
.getUsers()
.stream()
.map(SimpUser::getName)
.collect(Collectors.toList());
}
}
但这总是给我一个空列表:[]
,即使显然已经建立了WS-connections
此SimpUserRegistry
是否与Spring的Websocket系统一起工作,该系统配置了WebSocketConfigurer
和@EnableWebSocket
?我做错了什么?有什么建议或选择吗
提前谢谢你