如何获得连接到Socket.io的所有套接字

Moj*_*aba 5 socket.io

我在这里做了一些搜索并找到答案

// list all connected sockets
    var list = io.sockets.sockets;
    console.log("Connected sockets:");
    list.forEach(function(s) {
        console.log("    socket.id = ", s.id);
    });
Run Code Online (Sandbox Code Playgroud)

但因为io.sockets.sockets;那提到没有一个数组它不起作用.所以我有两个问题:

a)如何访问连接的所有插座?

b)如何访问连接到特定房间的插座?

干杯

PS:之前问过这个问题,但这些问题已经过时了.

Nij*_*esh 12

在最新版本的socket.io(1.4.5)中你必须这样做

Object.keys(io.sockets.sockets);
Run Code Online (Sandbox Code Playgroud)

这将返回一个包含已连接套接字ID的数组,您可以在其上应用forEach.

Object.keys(io.sockets.sockets).forEach(function(id) {
    console.log("ID:",id)  // socketId
})
Run Code Online (Sandbox Code Playgroud)

现在好了,对于B部分,可以将插座连接到一个房间使用的插座

Object.keys(io.sockets.adapter.rooms["ROOM_NAME"].sockets) //returns array of socketId's
Run Code Online (Sandbox Code Playgroud)