Pregunta

Estoy intentando escribir una aplicación de chat básica con Node.js (Express) y Socket.io.Todo 'parece' estar funcionando, pero mi servidor de socket parece estar solo 'enviando' el mensaje al remitente original.Aquí está mi código de socket:

var client = io.listen(app);

client.sockets.on('connection', function (socket) {
  socket.on('message', function (data) {
    console.log(data);
    socket.send(data);
  });
});

Y aquí está mi código del lado del cliente:

$(document).ready(function() {
    var socket = new io.connect('http://localhost:3000');

    socket.on('connect', function() {
        socket.send('A client connected.');
    });

    socket.on('message', function(message) {
        $('#messages').html('<p>' + message + '</p>' +  $('#messages').html());
        console.log(socket);

    });

    $('input').keydown(function(event) {
        if(event.keyCode === 13) {   
            socket.send($('input').val());
            $('input').val('');
        }
    });
});

Se agradece la ayuda.

¿Fue útil?

Solución

Utilice client.sockets.emit en lugar de socket.emit.Emitirá a cada cliente conectado (difusión), utilizando el objeto socket solo se envía al cliente específico.

Otros consejos

Del lado del servidor, creo que quieres:

socket.broadcast.emit(data);

en lugar de:

socket.send(data);

Consulte "Mensajes de difusión" en la parte inferior de la página "Cómo usar" .:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top