Saltar al contenido

Creando un chat privado entre una clave usando un node.js y socket.io

Solución:

Tienes que crear una habitación con conversation_id y hacer que los usuarios se suscriban a esa sala, para que pueda emitir un mensaje privado a esa sala por,

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 enviar un mensaje a una sala:

  1. Habitaciones Socket.io
  2. Socket.IO se suscribe a múltiples canales
  3. Diferencia de habitaciones 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 ID. Esta es la ID que realmente ayuda a enviar un mensaje a personas en particular.

primero tenemos que almacenar todos los socket.ids en una matriz,

   var people={};

   people[name] =  socket.id;

aquí el 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 enviemos un mensaje:

para esto necesitamos saber el nombre del receptor. Necesita emitir el nombre del receptor al servidor.

lo final 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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *