Node.js socket.io-io.sockets.adapter对象?

Node.js socket.io-io.sockets.adapter对象?,node.js,socket.io,Node.js,Socket.io,我正在试用socket.io并尝试构建一个多房间聊天应用程序。我遵循的指南使用1.0.0 socket.io之前的版本已经过时 我正试图在给定房间中查找已连接客户端的列表。谷歌搜索显示我必须使用适配器。但是,我在任何地方都找不到它的文档。我在GitHub文档中搜索了它,但搜索并没有返回关于适配器的任何信息 有人能告诉我正确的方向吗?我可以在哪里读到更多关于适配器及其相关方法的信息?另外,如果您能为socket.io提供最新的文档,我将不胜感激。谢谢。您可以获得顶级命名空间中所有房间的地图,如下所

我正在试用socket.io并尝试构建一个多房间聊天应用程序。我遵循的指南使用1.0.0 socket.io之前的版本已经过时

我正试图在给定房间中查找已连接客户端的列表。谷歌搜索显示我必须使用适配器。但是,我在任何地方都找不到它的文档。我在GitHub文档中搜索了它,但搜索并没有返回关于适配器的任何信息


有人能告诉我正确的方向吗?我可以在哪里读到更多关于适配器及其相关方法的信息?另外,如果您能为socket.io提供最新的文档,我将不胜感激。谢谢。

您可以获得顶级命名空间中所有房间的地图,如下所示:

io.nsps['/'].adapter.rooms
function getSocketsInRoom(room, namespace = '/') {
    let room = io.nsps[namespace].adapter.rooms[room];
    return room.sockets;
}
您可以按如下方式列出其中一个房间中的插座:

io.nsps['/'].adapter.rooms
function getSocketsInRoom(room, namespace = '/') {
    let room = io.nsps[namespace].adapter.rooms[room];
    return room.sockets;
}
据我所知,这类东西根本没有文档记录。我只是通过检查调试器中的存储方式才发现了类似的情况。这可能意味着未来可能会发生变化,也可能不会——我真的不知道

  sockets:
   { '2v8OmIS4qTGX61-YAAAC': true, '3YnScxOgpmAGhZWsAAAG': true },
  length: 2 }
它给你这个输出。因此,它基本上为您提供了clientId、是否连接以及连接到特定房间的客户端总数。当执行下面的代码(在node.js中编写的服务器端)时,会给出上面的输出

但是当你写下面的代码并把它记录下来的时候

var clientsInRoom = io.sockets.adapter.rooms
当连接单个客户端时,它将控制台记录此日志

{ '9mVAHSDwcwnqsF4aAAAA':
   Room { sockets: { '9mVAHSDwcwnqsF4aAAAA': true }, length: 1 } }

这个疯狂的“9MVAHSDWCWnQSF4aaAAAA”字面值是客户端id,对于每个客户端都是唯一的

也许这将有助于
sockets
标记不指向
socket.io
,而是指向较低级别的网络层。