解决问题:如果消息推送只是针对单台服务器(单个服务),只用维护一个Websocket连接池,那直接发送消息就行了(即理解为发送消息的服务,和推送消息的服务在一台机器上)。如果是多台服务器(多个服务),每台服务器上维护着自己独立的Websocket连接池,那下面这种实现方案就能解决你的困惑。

一、实现方案

1、每台接口服务器独立管理自己的websocket连接池。

2、管理机通过Redis发布订阅模式将消息发布到订阅频道的接口机。

3、接口机接收消息,发送给websocket连接的设备。

二、关键部分伪代码

1、管理机服务发送消息到redis指定频道。

2、接口机服务通过订阅指定频道获取redis的推送消息。

3、ws文件。

三、示例代码git地址

四、效果图