I'm using Socket.io on a Node.js server.
for (connectedSocket of io.sockets.sockets) {
console.log(`TEST: id = ${connectedSocket.id}`) //Why is this 'undefined'? All I want is the unique identifier of each socket in the server.
}
Not sure how to fix this, but it has to be super simple. Sorry about the fail code formatting :o
CodePudding user response:
As of socket.io v3, io.sockets
is now a Map
object as shown here. You can iterate it directly with:
for (let [id, socket] of io.sockets.entries()) {
// can use socket here
}
You can use the newer interface:
let socketsArray = await io.fetchSockets();
to get you an array of connected sockets.
Note, you can also use fetchSockets()
with rooms and namespaces as shown here.