18

在 0.9.x 版本中,我们可以像这样通过 ID 获取套接字:

io.sockets.socket(socketId)

但是在 1.0.x 中我们不能。如何在 1.0.x 中通过 id 查找套接字?

4

6 回答 6

50

对于 socket.io 1.0 使用:

io.sockets.connected[socketId]

对于 0.9,它的 io.sockets.sockets[socketId] 而不是 io.sockets.socket[socketId]

于 2014-11-21T09:26:57.247 回答
19

你也可以像这样使用:

io.to(socketid).emit();
于 2015-01-20T13:11:02.113 回答
16

Socket.io 版本 4.0.0

io.sockets.sockets.get(socketId);

于 2021-03-27T20:51:32.660 回答
8

版本 3.0.3

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

基本上,sockets不再是一个简单的Object。这是一个地图,所以你必须使用.get().

于 2020-12-09T16:11:44.760 回答
7

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
于 2017-08-03T12:58:08.700 回答
3

我试过的最简单的方法是:

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

然后你可以做

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

或其他你想要的东西。

于 2019-11-12T07:10:06.430 回答