我正在使用本教程,我正在试图弄清楚如何获得当前会话的数量.
我的WebSocketConfig看起来像这样(从教程中复制和粘贴):
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/gs-guide-websocket").withSockJS();
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道这个课程内部的会话数量(再次复制和粘贴):
@Controller
public class GreetingController {
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) throws Exception {
Thread.sleep(1000); // simulated delay
return new Greeting("Hello, " + message.getName() + "!");
}
}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来获取websocket的当前会话(用户,连接)的数量?
编辑:
这是我的解决方案:
Set<String> mySet = Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>());
@EventListener
private void onSessionConnectedEvent(SessionConnectedEvent event) {
StompHeaderAccessor sha = StompHeaderAccessor.wrap(event.getMessage());
mySet.add(sha.getSessionId());
} …Run Code Online (Sandbox Code Playgroud)