无论我们使用什么版本,如果我们只是 console.log() 我们在服务器端 nodejs 代码中使用的“io”对象,[例如 io.on('connection', function(socket) {...});] ,我们可以看到“io”只是一个json对象,并且有很多子对象存储了socket id和socket对象。
我正在使用 socket.io 版本 1.3.5,顺便说一句。
如果我们查看 io 对象,它包含,
sockets:
{ name: '/',
server: [Circular],
sockets: [ [Object], [Object] ],
connected:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
在这里我们可以看到 socketids "B5AC9w0sYmOGWe4fAAAA" 等等。所以,我们可以这样做,
io.sockets.connected[socketid].emit();
同样,在进一步检查中,我们可以看到类似的部分,
eio:
{ clients:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
所以,我们可以通过这样做从这里检索一个套接字
io.eio.clients[socketid].emit();
此外,在我们拥有的引擎下,
engine:
{ clients:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
所以,我们也可以写,
io.engine.clients[socketid].emit();
所以,我想我们可以通过上面列出的 3 种方式中的任何一种来实现我们的目标,
- io.sockets.connected[socketid].emit(); 或者
- io.eio.clients[socketid].emit(); 或者
- io.engine.clients[socketid].emit();