小编Flo*_*nDe的帖子

如何在 Spring Reactive Websocket API 中广播消息?

我正在开发一个简单的聊天。我真的很喜欢基于 Tomcat 的 spring websocket API,但是有一个问题。Tomcat 使用基于线程的模型。如果我有大约 500 个在线用户,tomcat 会启动 200 个线程(默认值)并且我的 CPU 会死掉。因此,我需要一个基于事件循环的 websocket 实现。我决定尝试使用 websockets 的全新 spring 反应式 API。

所以,我需要与聊天室聊天。当某个用户在聊天室内发送消息时,必须发送给该聊天室内的所有用户。

Spring 提供以下 API:

@Service
public class ChatWebSocketHandler implements WebSocketHandler {

    @Override
    public Mono<Void> handle(WebSocketSession session) {
        Mono<Void> input =  ;
        Mono<Void> output = ;

        return Mono.zip(input, output).then();
    }
}
Run Code Online (Sandbox Code Playgroud)

没有用于检测connecteddisconnected事件的API (就像 Tomcat 一样)。因此,我无法存储active sessions可用于消息广播的 集合。

java spring reactive-programming spring-websocket spring-webflux

4
推荐指数
1
解决办法
2769
查看次数