springboot webflux websocket 实现多人聊天。
handler类处理出入站消息
其余代码可以在https://www.ibm.com/developerworks/cn/java/spring5-webflux-reactive/ 找到,
或者 https://gitee.com/zengq-s/webflux-websocket-demo.git
由于网上 都是 客户端和服务器单个链接, 1v1 的例子也没找到,根据网上部分资料写出一点 多播的示例。 1v1不在举例子
clients 存储方式可以根据自己的情况来定。
由于websocket只能存放在各自服务器,在分布式环境下需要通过消息中间件来触发消息。
这里clients直接保存在了handler,可根据实际情况更改, 分布式 环境下可以使用 redis的stream 或者rabbitmq等消息中间件实现消息发送。这里选择 redis 的stream。
文章中没有更新redis stream代码。 要查看stream相关可以检出demo查看。
@Slf4j
@Component
public class EchoHandler implements WebSocketHandler {
// 缓存session
static Map<String, SocketClient> clients = new ConcurrentHashMap<>();