Puede utilizar salas socket.io. Desde el lado del cliente, emita un evento ("unirse" en este caso, puede ser cualquier cosa) con cualquier identificador único (correo electrónico, id).
Lado del cliente:
var socket = io.connect('http://localhost');
socket.emit('join', {email: user1@example.com});
Ahora, desde el lado del servidor, use esa información para crear una sala única para ese usuario.
Lado del servidor:
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.on('join', function (data) {
socket.join(data.email); // We are using room of socket io
});
});
Entonces, ahora todos los usuarios se han unido a una sala con el nombre del correo electrónico del usuario. Entonces, si desea enviar un mensaje a un usuario específico, solo tiene que
Lado del servidor:
io.sockets.in('user1@example.com').emit('new_msg', {msg: 'hello'});
Lo último que queda por hacer en el lado del cliente es escuchar el evento "new_msg".
Lado del cliente:
socket.on("new_msg", function(data) {
alert(data.msg);
}
Espero que captes la idea.