跟踪跨多服务器集群的expressjs中已连接客户端的数量

时间:2019-07-17 14:49:45

标签: express redis server-sent-events

我正在使用SSE,需要跟踪整个集群中活动连接的数量。在每种情况下我都能做到

server.getConnections(function(err, count){
    if(err) throw err;
    console.log(count);
});

使用此方法并使用Redis在集群中保持准确总数的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

不知道您的设置的所有详细信息,我将按照以下方式进行处理:

  • 假设所有群集实例都与同一个Redis实例通信,请在Redis存储上设置名为 connection_count 的密钥:SET connection_count 0
  • 在每个群集节点上处理server.on('connection', (socket) => {...})方法。在处理程序内部,以原子方式递增Redis商店上的 connection_count 键的值:INCR connection_count
  • 处理request.on('close', () => {...}),并从事件处理程序DECR connection_count中自动减少Redis存储上的 connection_count 值。