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);
});
});