Pumbaa_P2Ng
2019-06-24 22:39
背景:
通过SpringBoot + Netty搭建应用作为IM服务,SpringBoot提供IM业务接口,启动SpringBoot的时候另外起一条线程启动Netty框架,作为WebSocket链接地址。
现在问题是:
例如A客户端跟www.im.xxx.com/ws创建WebSocket链接的时候,与A服务端进行长链接。B客户端跟B服务端进行长链接。
那么在A与B之间发送文本信息(聊天内容,Hello World),A服务端无法转发到B服务端...因为他们的Channel没有共享...
那么通过什么方式可以使应用HA(高可用,集群,非单点)???
这里需要用到redis的消息发布和订阅。当客户端A和服务器1建立netty连接时,根据当前连接的管道名称进行redis消息订阅,假设客户端A和服务器1之间的管道名称为A1。当客户端B连接到服务器2又想与服务器1通信时,客户端B可以根据A1向redis发布消息,因为在这之前服务器1已经消息订阅了A1,这样服务器1就可以接收到客户端B的消息。
回头你确定了也给我说下
我们公司也在用这个,我也还在追寻这块原理。他们说创建连接后,把连接保存到Redis中,通过NGINX做高可用
Netty入门之WebSocket初体验
29325 学习 · 63 问题
相似问题