La creación de un chat privado entre una clave utilizando un node.js y el zócalo.io

¿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 respuestas

  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

Deja un comentario

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