Warum sendet meine Socket.io Express-App nur an den Client des Absenders?
Frage
Ich versuche, eine grundlegende Chat-Anwendung mit Node.js (Express) und Socket.io zu schreiben.Alles scheint zu funktionieren, aber mein Socket-Server scheint nur die Nachricht an den ursprünglichen Absender zurückzusenden.Hier ist mein Socket-Code:
var client = io.listen(app);
client.sockets.on('connection', function (socket) {
socket.on('message', function (data) {
console.log(data);
socket.send(data);
});
});
Und hier ist mein clientseitiger Code:
$(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('');
}
});
});
Hilfe wird geschätzt.
Lösung
Verwenden Sie client.sockets.emit
anstelle von socket.emit
.Es wird an jeden verbundenen Client (Broadcast) gesendet, wobei das Socket-Objekt nur an den bestimmten Client gesendet wird.
Andere Tipps
Serverseitig, ich denke, Sie möchten:
socket.broadcast.emit(data);
statt:
socket.send(data);
Siehe "Broadcasting Messages" am Ende der Seite "Verwendung" .:)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow