我有多个使用redisstore水平缩放的socket.io服务器。我已经有效地设置了房间,并且能够成功地跨服务器等广播到房间。现在,我正在尝试建立状态页面,而我无法弄清楚的是如何简单地计算连接的用户数所有服务器。
io.sockets.clients(’room’)和io.sockets.sockets只会告诉您一台服务器上已连接客户端的数量,而不是告诉所有连接到同一RedisStore的服务器。
有什么建议吗?
谢谢。
我通过让每个服务器定期在redis中设置用户计数来解决此问题,该计数包括自己的pid:
每做 setex userCount:<pid> <interval+10> <count>
setex userCount:<pid> <interval+10> <count>
然后状态服务器可以查询每个密钥,然后获取每个密钥的值:
对于每一个keys userCount*合计+ =get <key>
keys userCount*
get <key>
因此,如果服务器崩溃或关闭,则间隔+10之后,其计数将减少redis
对丑陋的伪代码感到抱歉。:)