Qualunque versione stiamo usando se semplicemente console.log () l'oggetto "io" che usiamo nel nostro codice nodejs sul lato server, [es. Io.on ('connessione', funzione (socket) {...});] , possiamo vedere che "io" è solo un oggetto json e ci sono molti oggetti figlio in cui sono memorizzati l'id socket e gli oggetti socket.
Sto usando socket.io versione 1.3.5, a proposito.
Se guardiamo nell'oggetto io, esso contiene,
sockets:
{ name: '/',
server: [Circular],
sockets: [ [Object], [Object] ],
connected:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
qui possiamo vedere i socketid "B5AC9w0sYmOGWe4fAAAA" ecc. Quindi, possiamo fare,
io.sockets.connected[socketid].emit();
Ancora una volta, su un'ulteriore ispezione possiamo vedere segmenti come,
eio:
{ clients:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
Quindi, possiamo recuperare un socket da qui facendo
io.eio.clients[socketid].emit();
Inoltre, sotto il motore abbiamo,
engine:
{ clients:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
Quindi, possiamo anche scrivere,
io.engine.clients[socketid].emit();
Quindi, immagino che possiamo raggiungere il nostro obiettivo in uno dei 3 modi che ho elencato sopra,
- io.sockets.connected [socketid] .emit (); O
- io.eio.clients [socketid] .emit (); O
- io.engine.clients [socketid] .emit ();