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..
....
War es hilfreich?

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');

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top