我现在要做一个远程控制设备的程序,整体结构如下:
设备1,设备2,……
| /
服务器
| \
控制台1,控制台2,……
每台设备可以有多个控制台,每个控制台只能控制一台设备。
目前服务器采用 Workerman 的 WebSocket 协议把控制台和设备连起来。我的问题是,当多个 Worker 进程时,如果控制台和设备的连接不在同一个进程里,比如,设备1 发生状况时,向所有关注它的控制台发出通知,但可能有部分控制台在另一个进程里,怎么通知它们呢?
谢谢!
最佳实践应该是引入 MQ(Message Queue),通过订阅消息来实现你的需求,这样可以跟具体的实现解耦。
差一点儿的话你就得搞进程通讯来。像 WorkerMan 本身提供了 Channel 组件可以用于进程间通信。如果要跟操作系统强耦合的话,也可以用 Linux 上提供的共享内存之类的。