根据Spring 4.2.0文档,第5.5项,我正在尝试使用SimpUserRegistry来获取连接到websockets / STOMP端点的用户列表......但我在Spring上很新,我只是不喜欢知道在哪里/如何使用这个课程。你能给我一个例子或指出我正确的方向吗?
答案 0 :(得分:7)
只需注入SimpUserRegistry
作为依赖项。以下是打印所有已连接用户的用户名的示例:
@Autowired private SimpUserRegistry userRegistry;
public void printConnectedUsers() {
userRegistry.getUsers().stream()
.map(u -> u.getName())
.forEach(System.out::println);
}
答案 1 :(得分:2)
刚刚与一个类似的问题作斗争 - 以为我会把这些发现留给未来的旅行者。
我尝试使用包含上述自动连接WebSocketSecurityInterceptor
的{{1}}来决定应该发送哪些消息。这涉及在SimpUserRegistry
中设置拦截器;因为我需要Autowired字段,所以我不能像正常一样使用拦截器的构造函数。
WebSocketConfig
和
@Component
public class WebSocketSecurityInterceptor implements ChannelInterceptor {
@Autowired
private SimpUserRegistry simpUserRegistry;
...other stuff
}
不幸的是,在上面,由于初始化顺序的一些怪癖,当您将类自动装入 @Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer {
@Autowired
private WebSocketSecurityInterceptor webSocketSecurityInterceptor;
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/stream");
config.configureBrokerChannel().setInterceptors(webSocketSecurityInterceptor);
}
时,WebSocketConfig
不再运行,因此不会添加拦截器。
我们能找到的唯一方法就是在应用程序环境中大肆翻找以获得正确的bean:
configureMessageBroker(MessageBrokerRegistry config)