Какую бы версию мы не использовали, если мы просто console.log () используем объект "io", который мы используем в нашем коде nodejs на стороне сервера, [например, io.on ('connection', function (socket) {...});], мы можем видеть, что "io" - это просто объект json, и есть много дочерних объектов, где хранятся идентификаторы сокета и объекты сокета.
Я использую 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 ();
OR
- io.eio.clients [socketid] .emit ();
OR
- io.engine.clients [socketid] .emit ();