¿Cómo puedo emitir un mensaje a todos los usuarios de un chat privado para compartir un conversation_id el uso de node.js y el zócalo.io?

var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
conversations = {};

app.get('/', function(req, res) {
res.sendfile('/');
});

io.sockets.on('connection', function (socket) {

socket.on('send message', function (data) {

    var conversation_id = data.conversation_id;

    if (conversation_id in conversations) {

        console.log (conversation_id + ' is already in the conversations object');

        //emit the message [data.message] to all connected users in the conversation

    } else {
        socket.conversation_id = data;
        conversations[socket.conversation_id] = socket;

        conversations[conversation_id] = data.conversation_id;

        console.log ('adding '  + conversation_id + ' to conversations.');

        //emit the message [data.message] to all connected users in the conversation

    }
})
});

server.listen(8080);

OriginalEl autor Asa Carter | 2014-05-12

2 Comentarios

  1. 47

    Usted tiene que crear una sala con conversation_id y hacer que los usuarios se suscriban a la habitación, así que usted puede emitir un mensaje privado a esa habitación,

    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í es el de google docs y de ejemplo para la creación de una sala, la suscripción a la habitación y Emiten mensajes a una habitación:

    1. Zócalo.io Habitaciones
    2. Zócalo.IO suscribirse a múltiples canales
    3. Zócalo.io habitaciones diferencia entre la emisión.y sockets.en
    Genial, gracias, funciona perfectamente. He cambiado socket.broadcast.to() a io.sockets.in() lo que incluye la emisión de socket.
    esto me ayudó mucho divillysausages.com/2015/07/12/an-intro-to-socket-io , consulte Envío de un mensaje a otro usuario

    OriginalEl autor Srikanth Jeeva

  2. 11

    SEGURO: Simplemente,

    Esto es lo que usted necesita :

     io.to(socket.id).emit("event", data);

    cada vez que un usuario se unió al servidor de socket detalles serán generados incluyendo su IDENTIFICACIÓN.Este es el IDENTIFICADOR que realmente ayuda a enviar un mensaje a personas en particular.

    primero necesitamos almacenar todo el zócalo.los identificadores en la serie,

       var people={};
    
       people[name] =  socket.id;

    aquí el nombre es el receptor de los nombre. Ejemplo:

      people["ccccc"]=2387423cjhgfwerwer23;

    Por lo tanto, ahora podemos conseguir que encaje.id con el receptor de su nombre cada vez que estamos enviando mensaje:

    para ello necesitamos saber la recievername.Usted necesita para emitir receptor de nombre para el servidor.

    final la cosa es:

      socket.on('chat message', function(data){
     io.to(people[data.reciever]).emit('chat message', data.msg);
     });

    Espero que esto funcione bien para usted.!!Buena Suerte

    Esta debe ser la mejor respuesta

    OriginalEl autor Trojan

Dejar respuesta

Please enter your comment!
Please enter your name here