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

Socket.IO-如何获取已连接套接字/客户端的列表?

董谦
2023-03-14
问题内容

我正在尝试获取当前已连接的所有套接字/客户端的列表。

io.sockets 不幸的是,它不返回数组。

我知道我可以使用数组保留自己的列表,但是由于以下两个原因,这并不是最佳解决方案:

  1. 冗余。Socket.IO已保留此列表的副本。

  2. Socket.IO提供了为客户端(即:)设置任意字段值的方法,socket.set('nickname', 'superman')因此,如果我要维护自己的列表,则需要跟上这些更改。

救命?


问题答案:

在Socket.IO 0.7中,您clients在名称空间上有一个方法,该方法返回所有已连接套接字的数组。

没有名称空间的API:

var clients = io.sockets.clients();
var clients = io.sockets.clients('room'); // all users from room `room`

对于命名空间

var clients = io.of('/chat').clients();
var clients = io.of('/chat').clients('room'); // all users from room `room`

希望这对以后的人有帮助

注意:解决方案 适用于1.0之前的版本

2020年3月6日更新

从1.x及更高版本开始,请参考以下链接:在socket.io中获取聊天室中的人数



 类似资料:
  • 问题内容: 我正在使用Socket.io,并且想知道从客户端到服务器的连接状态。 像这样: 如果连接断开或由于任何原因断开连接,我需要此信息来向用户提供视觉反馈。 问题答案: 您可以检查属性: 它是动态更新的,如果连接丢失,它将设置为,直到客户端再次选择连接为止。很容易检查或类似的东西。 另一个解决方案是捕获事件并自己跟踪状态。

  • 问题内容: 我用NodeJS,socketIO和Express中的不同聊天室制作了一个聊天客户端。我正在尝试显示每个房间的已连接用户的更新列表。 有没有一种方法可以将用户名连接到对象,以便在执行操作时可以看到所有用户名: 然后执行以下操作: 我还可以通过其他方式做到这一点? 解决: 这有点重复,但是解决方案在任何地方都不很清楚地写出来,所以我想我会在这里写下来。这是的解决方案后由安迪轩至极被回答。

  • 问题内容: 这是两个相关的问题。将它们一起发布更有意义。 问题1 我有一个node.js应用程序,它向所有客户端发出事件,所有当前客户端都将发出一个响应。如何创建所有回复到初始发射的客户端的列表,以及可以使用哪种标识来区分客户端? 问题2: 在收集已连接的客户端列表之后,我想做的就是访问一个具有行数的MySQL数据库表,并为每个客户端行分配一个表。这些行将被发回给它们各自的客户端。如何才能做到这一

  • Lua客户机中的on connection事件被触发并打印“connected”,但Node.js socket.io服务器中的on connection事件没有被触发。我用Python套接字服务器尝试了Lua客户机,它工作得很好!我还尝试了一个带有Javascript套接字客户端的Node.js套接字服务器,它运行得很好! NodeMCU和socket.io之间是否存在兼容性问题?

  • 我在unix(OSX)机器上使用kqueue建立了一个TCP/IP echo服务器,它可以打开100个TCP/IP端口,每个端口接受4000个客户端,我使用另外15台机器建立了大约23万个连接。(每道工序4000康纳,每箱4道工序) 服务器似乎可以接受更多,但问题是客户端,建立更多连接是有限制的。如Windows XP-3000、Windows7、UNIX-16384。 我怎么克服?

  • 我想检查一下我的客户是否断开了连接。根据我的研究,一种可能的方式是我可以继续给客户写信。如果客户端未能接收到消息,则表示已断开连接。我向相应的客户端发送消息“Checking Connection:Client”clientNo。 我将clientNo 1连接到服务器,它接收 客户1 但是当我将另一个客户端连接到服务器时,我的clientNo1停止接收来自服务器的消息,我的clientNo2现在将