Por que meu aplicativo Socket.io Express está apenas enviando para o cliente do remetente?

StackOverflow https://stackoverflow.com/questions/9334360

  •  27-10-2019
  •  | 
  •  

Pergunta

Estou tentando escrever um aplicativo de bate-papo básico com Node.js (Express) e Socket.io.Tudo 'parece' estar funcionando, mas meu servidor de soquete parece estar apenas 'enviando' a mensagem de volta ao remetente original.Aqui está meu código de soquete:

var client = io.listen(app);

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

E aqui está meu código do lado do 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('');
        }
    });
});

Agradecemos a ajuda.

Foi útil?

Solução

Use client.sockets.emit em vez de socket.emit.Ele emitirá para cada cliente conectado (transmissão), usando o objeto de soquete apenas para o cliente específico.

Outras dicas

Lado do servidor, acho que você quer:

socket.broadcast.emit(data);

em vez de:

socket.send(data);

Consulte "Transmitindo mensagens" na parte inferior da página "Como usar" .:)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top