Socket.IO 连接用户数

新手上路,请多包涵

终于让 Socket.IO 正常工作了,但是遇到了一个奇怪的问题。

我不确定这是否是最好的方法,但我正在使用:

 io.sockets.clients().length

这将返回连接到我的服务器的客户端数量。问题是在几次连接和断开用户之后,这个数字开始保持高于应有的水平。

例如,如果我连接并要求我的朋友连接,数字会上升,这是正确的。但是当我们开始断开连接并重新连接时,数量并没有减少。

我在 VMware Ubuntu 服务器上运行 Node.jsSocket.IO 服务器。

为什么会这样或者是否有更好的方法来找出有多少人连接到服务器?

原文由 imperium2335 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

这有一个 github问题。问题是,每当有人断开 socket.io 的连接时,都不会从数组中删除( splice ),而只是将值设置为“null”,因此实际上您的数组中有很多 null 值,这会使您的客户( ).length 比您在现实中拥有的连接更大。

您必须管理一种不同的方式来计算您的客户,例如

socket.on('connect', function() { connectCounter++; });
socket.on('disconnect', function() { connectCounter--; });

这是一个头脑嗡嗡声,为什么 socket.io 背后的人留下了这样的东西,但最好在 github 问题中解释,我作为链接发布!

原文由 drinchev 发布,翻译遵循 CC BY-SA 3.0 许可协议

以防有人在使用 socket.io 1.0 版时访问此页面

您可以从中获取连接的客户端数

socketIO.engine.clientsCount

需要一个答案,以上不适用于新版本的 socket.io

原文由 Ahmad 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题