Яку б версію ми не використовували, якщо ми просто console.log () об'єкт "io", який ми використовуємо в коді nodejs на стороні сервера, [наприклад, io.on ("з'єднання", функція (socket) {...});] , ми можемо бачити, що "io" - це просто об'єкт json, і є багато дочірніх об'єктів, де зберігаються ідентифікатор сокета та сокет.
Я використовую socket.io версії 1.3.5, btw.
Якщо ми подивимось на об’єкт 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();
Отже, я думаю, що ми можемо досягти своєї мети будь-яким із 3-х способів, які я перераховував вище,
- io.sockets.connected [socketid] .emit (); АБО
- io.eio.clients [socketid] .emit (); АБО
- io.engine.clients [socketid] .emit ();