Quelle que soit la version que nous utilisons si nous utilisons simplement console.log () l'objet "io" que nous utilisons dans notre code nodejs côté serveur, [par exemple io.on ('connection', function (socket) {...});] , nous pouvons voir que "io" est juste un objet json et il y a de nombreux objets enfants où les objets id et socket sont stockés.
J'utilise socket.io version 1.3.5, btw.
Si nous regardons dans l'objet io, il contient,
sockets:
{ name: '/',
server: [Circular],
sockets: [ [Object], [Object] ],
connected:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
ici nous pouvons voir les socketids "B5AC9w0sYmOGWe4fAAAA" etc. Donc, nous pouvons faire,
io.sockets.connected[socketid].emit();
Encore une fois, après une inspection plus approfondie, nous pouvons voir des segments comme,
eio:
{ clients:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
Ainsi, nous pouvons récupérer une socket à partir d'ici en faisant
io.eio.clients[socketid].emit();
Aussi, sous le moteur, nous avons,
engine:
{ clients:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
Donc, on peut aussi écrire,
io.engine.clients[socketid].emit();
Donc, je suppose que nous pouvons atteindre notre objectif de l'une des 3 façons que j'ai énumérées ci-dessus,
- io.sockets.connected [socketid] .emit (); OU
- io.eio.clients [socketid] .emit (); OU
- io.engine.clients [socketid] .emit ();