Andy Hin Andy Hin - 4 months ago 32
Node.js Question

Socket.IO - how do I get a list of connected sockets/clients?

I'm trying to get a list of all the sockets/clients that are currently connected.

does not return an array, unfortunately.

I know I could keep my own list using an array, but don't think this is an optimal solution for 2 reasons:

  1. Redundancy. Socket.IO already keeps a copy of this list.

  2. Socket.IO provides method to set arbitrary field values for clients (i.e:
    socket.set('nickname', 'superman')
    ) so I'd need to keep up with these changes if I were to maintain my own list.



In Socket.IO 0.7 you have a clients method on the namespaces, this returns a array of all connected sockets.

API for no namespace:

var clients = io.sockets.clients();
var clients = io.sockets.clients('room'); // all users from room `room`

For a namespace

var clients = io.of('/chat').clients();
var clients = io.of('/chat').clients('room'); // all users from room `room`

Hopes this helps someone in the future

NOTE: This Solution ONLY works with version prior to 1.0