Lösen Sie einen NodeJS -Socket.IO -Server zum Sendung über Port 80 aus
Frage
Echtzeit -Update -Mechanismus: Benutzer schreibt -> Php es in MySQL DB -> Php Senden Sie Informationen an NodeJs -> NodeJs Senden Sie die Änderung alle Abonnenten -> Andere können es in Echtzeit bemerken.
Der Socket.IO -Server funktioniert gut und läuft auf Port 8080. Ich habe den HTTP -Server von Node HTTP auf Port 80. Wie kann ich eine Triggernachricht auf dem HTTP -Server erhalten und die Nachricht an alle Socket.IO -Clients senden?
var io = require('socket.io').listen(8080);
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Message Broadcast\n');
console.log("Message Sent");
//DOES NOT SEEM TO WORK, error
io.broadcast("Messages");
//No error but no messages
io.emit("Message");
}).listen(80, "0.0.0.0");
/**
Other socket.io code which works well..
....
Lösung
In Socket.io 0.7 sollten Sie Folgendes verwenden, um an alle angeschlossenen Sockets ohne eine bestimmte Socket -Referenz zu senden:
io.sockets.send("Messages")
Beachten Sie, dass dies anders ist als broadcast
Da würde das an alle Sockets senden außer Der Socket, der die Verbindung initiierte - benötigen Sie natürlich eine Sendungsreferenz, weshalb Ihr aktueller Code nicht ausreicht.
Zitat von der Wiki -Seite: Socket.io/wiki
Wenn Sie eine Nachricht an alle senden möchten, auf die Sie sich verweisen können
io.sockets
:
io.sockets.send('message');
io.sockets.emit('event');