问题
I did some search here and found this answer
// list all connected sockets
var list = io.sockets.sockets;
console.log("Connected sockets:");
list.forEach(function(s) {
console.log(" socket.id = ", s.id);
});
But because io.sockets.sockets;
that mentioned there is NOT an array it doesn't work.so i have 2 questions :
a)How can i access to all sockets connected?
b)How can i access to sockets connected to specific room?
Cheers
PS:this question is asked before but those questions are out dated.
回答1:
In latest version of socket.io (1.4.5) you'l have to do
Object.keys(io.sockets.sockets);
This returns an array containing id's of sockets connected and you can apply forEach on it.
Object.keys(io.sockets.sockets).forEach(function(id) {
console.log("ID:",id) // socketId
})
Ok now for the B part, for getting array of socketids off sockets connected to a room use
Object.keys(io.sockets.adapter.rooms["ROOM_NAME"].sockets) //returns array of socketId's
来源:https://stackoverflow.com/questions/35249770/how-to-get-all-the-sockets-connected-to-socket-io