Какую бы версию мы не использовали, если мы просто console.log () будем использовать объект "io", который мы используем в нашем коде nodejs на стороне сервера, [например, io.on ('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 ();