Как подключить все розетки к сети 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);
    });

Но поскольку io.sockets.sockets;, который упомянут, нет массива, он не work.so у меня есть 2 вопроса:

A) как я могу получить доступ ко всем подключенным сокетам?

B) как я могу получить доступ к розеткам, подключенным к определенной комнате?

Ура

PS: этот вопрос был задан раньше, но эти вопросы устарели.

1 5

1 ответ:

В последней версии socket.io (1.4.5) вам придется сделать

Object.keys(io.sockets.sockets);

Это возвращает массив, содержащий идентификаторы подключенных сокетов, и вы можете применить 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