小编Lea*_*les的帖子

Spring websocket - 如何获得会话数

我正在使用教程,我正在试图弄清楚如何获得当前会话的数量.

我的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)

java spring stomp-websocket

6
推荐指数
2
解决办法
6447
查看次数

标签 统计

java ×1

spring ×1

stomp-websocket ×1