当前位置: 首页 > 面试题库 >

计算水平服务器上的socket.io用户

林祯
2023-03-14
问题内容

我有多个使用redisstore水平缩放的socket.io服务器。我已经有效地设置了房间,并且能够成功地跨服务器等广播到房间。现在,我正在尝试建立状态页面,而我无法弄清楚的是如何简单地计算连接的用户数所有服务器。

io.sockets.clients(’room’)和io.sockets.sockets只会告诉您一台服务器上已连接客户端的数量,而不是告诉所有连接到同一RedisStore的服务器。

有什么建议吗?

谢谢。


问题答案:

我通过让每个服务器定期在redis中设置用户计数来解决此问题,该计数包括自己的pid:

每做 setex userCount:<pid> <interval+10> <count>

然后状态服务器可以查询每个密钥,然后获取每个密钥的值:

对于每一个keys userCount*合计+ =get <key>

因此,如果服务器崩溃或关闭,则间隔+10之后,其计数将减少redis

对丑陋的伪代码感到抱歉。:)



 类似资料:
  • 我试图将Node.js Socket.io客户机连接到Python/Flask Socket.io服务器。 在服务器(Raspberry Pi)上运行这个项目:pi-gpio-server。这个项目已经有了一个内置的网站,这是一个socket.io客户机来访问Raspberry PI的引脚。整个项目运作良好。 有什么想法吗,为什么我找不到联系?在Flask服务器中有客户机的限制吗?有什么特别的命令

  • 我想写一个代码,客户端向服务器发送10个整数,然后服务器计算这些数字的平均值,然后服务器将平均值发回客户端,我这样写服务器代码,必须使用特定的inet地址,我应该更改客户端和服务器之间的服务器端口吗? 我该怎么办?我可以使用哪个net地址?

  • 问题内容: 我有一个socket.io服务器正在运行,并且有一个带有socket.io.js客户端的匹配网页。一切正常。 但是,我想知道是否有可能在另一台机器上运行一个单独的node.js应用程序,该应用程序充当客户端并连接到上述的socket.io服务器? 问题答案: 使用Socket.IO-client应该可以做到这一点:https : //github.com/LearnBoost/sock

  • Socket.io 是一款非常流行的应用层实时通讯协议和框架,可以轻松实现应答、分组、广播。hyperf/socketio-server 支持了 Socket.io 的 WebSocket 传输协议。 安装 composer require hyperf/socketio-server hyperf/socketio-server 组件是基于 WebSocket 实现的,请确保服务端已经添加了

  • 问题内容: 我正在尝试通过SSL连接使用socket.io设置服务器到服务器的链接。这是我的例子: 在没有SSL的情况下运行时,代码工作正常。我怀疑这可能是我的自签名证书未被接受,但是我不知道如何使客户接受它。 请告诉我如何:1.接受自签名SSL证书。或2.以其他方式帮助我完成这项工作。 提前致谢。 问题答案: 经过更多搜索后,将其添加到客户端中使其可以工作: require(’https’)。g

  • 1977年,Apple 计算机公司使个人计算(personal computer)得以普及。最初拥有一台计算机只是爱好者的梦想,随着它的价格不断降低,人们可以购买供个人或办公使用的计算机。1981年,世界上最大的计算机广家IBM公司推出了IBM个人计算机(IBM Personal computer)。一夜之间,个人计算机遍布公司、企业和政府机关。 然而这些计算机只是“独立”的个体,各自做自己的工作