2012-07-14 33 views
5

Necesito construir el chat dúo, utilizando websockets (socket.io + Node.js). Así, el simple ejemplo de mensaje de difusión a todos los usuarios:socket.io - emisión a ciertos usuarios

socket.on('user message', function (msg) { 
    socket.broadcast.emit('user message', socket.nickname, msg); 
    }); 

Pero cómo puedo emitirlo de determinado usuario a cierto usuario?

Respuesta

13

Hay dos posibilidades:

1) Cada zócalo ha almacenado su propio ID único en socket.id. Si conoce el ID de los usuarios, a continuación, sólo tiene que utilizar

io.sockets[id].emit(...) 

2) definir su propio ID (por ejemplo, nombre de usuario) y el uso

socket.join('priv/John'); 

en connection manejador. Ahora cada vez que desee enviar el mensaje únicamente a John, sólo tiene que hacer

socket.broadcast.to('priv/John').emit(...) 

Nota al margen: la primera solución proporcionada no se puede escalar a varias máquinas, por lo que el uso de consejo que el segundo.

+2

Estoy almacenando los usuarios en MySQL con los carriles, por lo que, ¿cómo puedo relacionar identificadores de usuario de dB a la toma ids? –