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

时间:2016-02-07 04:34:35

标签: socket.io

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

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

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

a)如何访问所有连接的套接字?

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

干杯

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

1 个答案:

答案 0 :(得分:12)

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

Object.keys(io.sockets.sockets);

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

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

现在好了,对于B部分,让连接到房间的插座中的插座阵列使用

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