我正在实现一个使用primus来处理websocket连接的nodejs服务器。服务器需要跟踪每个客户端的存在-并且服务器被实现为集群。
当客户端连接时,在redis上设置一个键来跟踪它与集群共享的存在,当客户端断开连接时,该键由同一线程更新。如果集群的一个线程崩溃,很明显到该线程的所有连接都将被丢弃。在这种情况下,我如何为每个断开连接的客户端更新redis状态?
在主服务器上跟踪线程死亡是否有意义?cluster.on('exit', function(worker, code, signal) {
//.. set as disconnected all the clients for this worker in redis
});
请看我们为这些场景开发的Primus插件:
https://github.com/primus/metroplex它也使用Redis来存储连接,但是当它们从集群中删除时,它有清除服务器的方法。这个插件也由构建Primus的人(包括我;-))官方支持