不管我们使用的是什么版本,如果我们只是console.log()我们在服务器端nodejs代码中使用的“io”对象,[例如io. log]在('connection', function(socket){…});]上,我们可以看到"io"只是一个json对象,有许多子对象存储套接字id和套接字对象。
我正在使用socket。顺便说一句,IO版本1.3.5。
如果我们查看io对象,它包含,
sockets:
{ name: '/',
server: [Circular],
sockets: [ [Object], [Object] ],
connected:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
在这里我们可以看到套接字“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();
所以,我想我们可以用上面列出的三种方法中的任何一种来实现我们的目标,
io.sockets.connected [socketid] .emit ();
或
io.eio.clients [socketid] .emit ();
或
io.engine.clients [socketid] .emit ();