无论我们使用什么版本,如果我们只是 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();