Socket.IO 1.0.x: получить сокет по идентификатору

В версии 0.9.x мы можем получить сокет по ID следующим образом:

io.sockets.socket(socketId)

Но в 1.0.x мы не можем. Как найти сокет по id в 1.0.x?


person Dũng Nguyễn    schedule 21.11.2014    source источник


Ответы (6)


Для socket.io 1.0 используйте:

io.sockets.connected[socketId]

Для 0.9 это io.sockets.sockets[socketId], а не io.sockets.socket[socketId]

person Sarita    schedule 21.11.2014
comment
Для соединений с пространством имен я не мог получить к нему доступ через io.sockets.connected[socketId].emit(), но он работал аналогично var nsp = io.of('/my-namespace');, а затем nsp.connected[socketId].emit(). Спасибо - person Luckylooke; 22.09.2016
comment
Соглашаясь с @Luckylooke, я могу поместить это в одну строку следующим образом: io.of('/namespace').connected[socketId].emit('message-tag', data, callback) Я думаю, стоит упомянуть, что я также могу передать функцию обратного вызова в качестве моста для запроса данных от подключенного клиента таким образом. - person Aryo; 27.01.2020

вы также можете использовать как:

io.to(socketid).emit();
person himanshu yadav    schedule 20.01.2015

Socket.io версии 2.0.3+

    let namespace = null;
    let ns = _io.of(namespace || "/");
    let socket = ns.connected[socketId] // assuming you have  id of the socket
person partikles    schedule 03.08.2017

Версия 3.0.3

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

По сути, sockets больше не является простым Объектом. Это карта, поэтому вы должны использовать .get().

person isaacsan 123    schedule 09.12.2020
comment
ткс, это работает для v3+ - person datdinhquoc; 14.03.2021

Socket.io версии 4.0.0

io.sockets.sockets.get(socketId);

person Sanjay Nishad    schedule 27.03.2021

Самый простой способ, который я пробовал:

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

Тогда вы можете сделать

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

или другие вещи, которые вы хотите.

person Wu Yaozu    schedule 12.11.2019