Pourquoi mon application Socket.io express juste d'envoyer au client le «de l'expéditeur?
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.
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