解决问题:如果消息推送只是针对单台服务器(单个服务),只用维护一个Websocket连接池,那直接发送消息就行了(即理解为发送消息的服务,和推送消息的服务在一台机器上)。如果是多台服务器(多个服务),每台服务器上维护着自己独立的Websocket连接池,那下面这种实现方案就能解决你的困惑。
一、实现方案
1、每台接口服务器独立管理自己的websocket连接池。
2、管理机通过Redis发布订阅模式将消息发布到订阅频道的接口机。
3、接口机接收消息,发送给websocket连接的设备。
二、关键部分伪代码
1、管理机服务发送消息到redis指定频道。
2、接口机服务通过订阅指定频道获取redis的推送消息。
3、ws文件。
三、示例代码git地址
四、效果图