Recuerda que en las ciencias informáticas cualquier problema casi siempre tiene diferentes soluciones, por lo tanto aquí mostraremos lo más óptimo y eficiente.
Solución:
Tienes que crear una habitación con conversation_id
y haga que los usuarios se suscriban a esa sala, para que pueda enviar un mensaje privado a esa sala,
cliente
var socket = io.connect('http://ip:port');
socket.emit('subscribe', conversation_id);
socket.emit('send message',
room: conversation_id,
message: "Some message"
);
socket.on('conversation private post', function(data)
//display data.message
);
Servidor
socket.on('subscribe', function(room)
console.log('joining room', room);
socket.join(room);
);
socket.on('send message', function(data)
console.log('sending room post', data.room);
socket.broadcast.to(data.room).emit('conversation private post',
message: data.message
);
);
Aquí están los documentos y el ejemplo para crear una sala, suscribirse a la sala y Emitir mensaje a una sala:
- Salas de Socket.io
- Socket.IO suscribirse a múltiples canales
- Diferencia de salas de socket.io entre broadcast.to y sockets.in
SEGURO: Simplemente,
Esto es lo que necesitas :
io.to(socket.id).emit("event", data);
cada vez que un usuario se une al servidor, se generarán los detalles del socket, incluida la identificación. Esta es la identificación que realmente ayuda a enviar un mensaje a personas específicas.
primero necesitamos almacenar todos los socket.ids en array,
var people=;
people[name] = socket.id;
aquí nombre es el nombre del receptor. Ejemplo:
people["ccccc"]=2387423cjhgfwerwer23;
Entonces, ahora podemos obtener ese socket.id con el nombre del receptor cada vez que enviamos un mensaje:
para esto necesitamos saber el nombre del destinatario. Debe emitir el nombre del destinatario al servidor.
lo ultimo es:
socket.on('chat message', function(data)
io.to(people[data.reciever]).emit('chat message', data.msg);
);
¡Espero que esto funcione bien para ti! Buena suerte
Si te animas, puedes dejar un ensayo acerca de qué le añadirías a este escrito.