socket.io socket.io-1.0

Enviar mensaje a una ID específica en Socket.IO 1.0



socket.io-1.0 (6)

Quiero enviar datos a una ID de socket específica.

Solíamos ser capaces de hacer esto en las versiones anteriores:

io.sockets.socket(socketid).emit(''message'', ''for your eyes only'');

¿Cómo haría algo similar en Socket.IO 1.0?


@Mustafa Dokumacı y @Curious ya proporcionaron suficiente información, estoy agregando cómo se puede obtener la identificación del socket.

Para obtener la identificación del socket use socket.id :

var chat = io.of("/socket").on(''connection'',onSocketConnected); function onSocketConnected(socket){ console.log("connected :"+socket.id); }


Creo que tanto @Curious como @MustafaDokumacı proporcionaron soluciones que funcionan bien. La diferencia es que con la solución de @MustafaDokumacı el mensaje se transmite a una sala y no solo a un cliente en particular.

La diferencia es prominente cuando se solicita un acuse de recibo.

io.sockets.connected[socketid].emit(''message'', ''for your eyes only'', function(data) {...});

funciona como se esperaba, mientras

io.to(socketid).emit(''message'', ''for your eyes only'', function(data) {...});

falla con

Error: Callbacks are not supported when broadcasting


En socket.io 1.0 proporcionan una mejor manera para esto. Cada zócalo se une automáticamente a una habitación por defecto mediante su propia identificación. Verificar documentos: http://socket.io/docs/rooms-and-namespaces/#default-room

Entonces puedes emitir a un socket por id con el siguiente código:

io.to(socketid).emit(''message'', ''for your eyes only'');


En socket.io 1.0 puede hacerlo con el siguiente código:

if (io.sockets.connected[socketid]) { io.sockets.connected[socketid].emit(''message'', ''for your eyes only''); }

Actualizar:

La respuesta de @MustafaDokumacı contiene una mejor solución.


Si usó un espacio de nombres, descubrí que funciona lo siguiente:

//Defining the namespace <br> var nsp = io.of(''/my-namespace''); //targeting the message to socket id <br> nsp.to(socket id of the intended recipient).emit(''private message'', ''hello'');

Más sobre espacios de nombres: http://socket.io/docs/rooms-and-namespaces/


en Node.js -> socket.io -> hay un ejemplo de chat para descargar Pegar esto en línea (io en la conexión) parte .. yo uso este código que funciona al 100%

io.on(''connection'', function(socket){ socket.on(''chat message'', function(msg){ console.log(socket.id); io.to(socket.id).emit(''chat message'', msg+'' you ID is:''+socket.id); }); });