【发布时间】:2015-01-19 06:45:52
【问题描述】:
在0.9.x版本中,我们可以这样通过ID获取socket:
io.sockets.socket(socketId)
但在 1.0.x 中我们不能。如何在 1.0.x 中通过 id 查找套接字?
【问题讨论】:
标签: node.js socket.io socket.io-1.0
在0.9.x版本中,我们可以这样通过ID获取socket:
io.sockets.socket(socketId)
但在 1.0.x 中我们不能。如何在 1.0.x 中通过 id 查找套接字?
【问题讨论】:
标签: node.js socket.io socket.io-1.0
对于 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() 类似。谢谢
io.of('/namespace').connected[socketId].emit('message-tag', data, callback) 我认为值得一提的是,我还可以传递一个回调函数作为一个桥梁来从以这种方式连接客户端。
你也可以这样使用:
io.to(socketid).emit();
【讨论】:
Socket.io 版本 4.0.0
io.sockets.sockets.get(socketId);
【讨论】:
版本 3.0.3
// in "of", you can put '/' or whatever namespace you're using
io.of('/').sockets.get(socketId)
基本上,sockets 不再是一个简单的对象。这是一张地图,所以你必须使用.get()。
【讨论】:
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
【讨论】:
我尝试过的最简单的方法是:
var socket1 = io.of("/").connected[socketId];
那你就可以了
socket1.join("some room");
socket1.leave("some room");
socket1.emit();
或其他你想要的东西。
【讨论】: