Socket.IO 1.0.x: Get socket by id

25.9k views Asked by At

In the 0.9.x version, we can get socket by ID like this:

io.sockets.socket(socketId)

But in 1.0.x we can't. How to find a socket by id in 1.0.x?

7

There are 7 answers

2
Sarita On BEST ANSWER

For socket.io 1.0 use:

io.sockets.connected[socketId]

For 0.9 its io.sockets.sockets[socketId] and not io.sockets.socket[socketId]

1
isaacsan 123 On

Version 3.0.3

// in "of", you can put '/' or whatever namespace you're using
    
io.of('/').sockets.get(socketId)

Basically, sockets is no longer a simple Object. It's a Map, so you have to use .get().

0
partikles On

Socket.io Version 2.0.3+

    let namespace = null;
    let ns = _io.of(namespace || "/");
    let socket = ns.connected[socketId] // assuming you have  id of the socket
3
Sanjay Nishad On

Socket.io Version 4.0.0

io.sockets.sockets.get(socketId);

0
himanshu yadav On

you can also use like:

io.to(socketid).emit();
0
Wu Yaozu On

The most simlple way I tried is:

var socket1 = io.of("/").connected[socketId];

Then you can do

socket1.join("some room");
socket1.leave("some room");
socket1.emit();

or other things you want.

0
Prakash On

You can also use fetchSockets() function to fetch the connection using socketId like below.

const sockets = await io.in(theSocketId).fetchSockets();

This solution works perfectly with socket.io redis/adaptor. For more API documentation, refer here https://socket.io/docs/v4/server-api/#namespacesockets