Perché la mia app Socket.io Express invia solo al client del "mittente"?
Domanda
Sto cercando di scrivere un'applicazione di chat di base con Node.js (Express) e Socket.io.Tutto "sembra" funzionare, ma il mio server socket sembra solo "inviare" il messaggio al mittente originale.Ecco il mio codice socket:
var client = io.listen(app);
client.sockets.on('connection', function (socket) {
socket.on('message', function (data) {
console.log(data);
socket.send(data);
});
});
Ed ecco il mio codice lato 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'aiuto è apprezzato.
Soluzione
Utilizza client.sockets.emit
invece di socket.emit
.Emetterà a ogni client connesso (broadcast), utilizzando l'oggetto socket invia solo al client specifico.
Altri suggerimenti
Lato server, penso tu voglia:
socket.broadcast.emit(data);
invece di:
socket.send(data);
Vedere "Trasmissione di messaggi" nella parte inferiore della pagina "Come utilizzare" .:)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow