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

Andy Hin picture Andy Hin · Jul 3, 2011 · Viewed 245.9k times · Source

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

io.sockets 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.

Help?

Answer

3rdEden picture 3rdEden · Aug 6, 2011

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


UPDATED 2020 Mar 06

From 1.x and above, please refer to this link: getting how many people are in a chat room in socket.io