Pourquoi mon application Socket.io express juste d'envoyer au client le «de l'expéditeur?

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

  •  27-10-2019
  •  | 
  •  

Question

Je suis en train d'écrire une application de chat de base avec Node.js (Express), et Socket.io. Tout « semble » pour travailler, mais mon serveur socket semble être seulement « envoyer » le dos de message à l'expéditeur d'origine. Voici mon code socket:

var client = io.listen(app);

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

Et voici mon code côté client:

$(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('');
        }
    });
});

L'aide est appréciée.

Était-ce utile?

La solution

Utilisez client.sockets.emit au lieu de socket.emit. Il émettra à chaque client connecté (broadcast), en utilisant l'objet socket envoie uniquement au client spécifique.

Autres conseils

côté serveur, je pense que vous voulez:

socket.broadcast.emit(data);

au lieu de:

socket.send(data);

Voir « Messages de radiodiffusion » au bas de la « Comment utiliser » . :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top