В версии 0.9.x мы можем получить сокет по ID следующим образом:
io.sockets.socket(socketId)
Но в 1.0.x мы не можем. Как найти сокет по id в 1.0.x?
В версии 0.9.x мы можем получить сокет по ID следующим образом:
io.sockets.socket(socketId)
Но в 1.0.x мы не можем. Как найти сокет по id в 1.0.x?
Для socket.io 1.0 используйте:
io.sockets.connected[socketId]
Для 0.9 это io.sockets.sockets[socketId], а не io.sockets.socket[socketId]
io.sockets.connected[socketId].emit()
, но он работал аналогично var nsp = io.of('/my-namespace');
, а затем nsp.connected[socketId].emit()
. Спасибо
- person Luckylooke; 22.09.2016
io.of('/namespace').connected[socketId].emit('message-tag', data, callback)
Я думаю, стоит упомянуть, что я также могу передать функцию обратного вызова в качестве моста для запроса данных от подключенного клиента таким образом.
- person Aryo; 27.01.2020
вы также можете использовать как:
io.to(socketid).emit();
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
Версия 3.0.3
// in "of", you can put '/' or whatever namespace you're using
io.of('/').sockets.get(socketId)
По сути, sockets
больше не является простым Объектом. Это карта, поэтому вы должны использовать .get()
.
Socket.io версии 4.0.0
io.sockets.sockets.get(socketId);
Самый простой способ, который я пробовал:
var socket1 = io.of("/").connected[socketId];
Тогда вы можете сделать
socket1.join("some room");
socket1.leave("some room");
socket1.emit();
или другие вещи, которые вы хотите.