Rolf B: SSE Verständnis-Frage

Beitrag lesen

problematische Seite

Hallo Linuchs,

wenn ich die Antwort von Licson hier richtig verstanden habe, dann ist das mal wieder ein W3Fools Beispiel. Wenn das PHP Script nicht weiterläuft und bspw. in eine Schleife mit einem SLEEP darin geht, versucht das JavaScript alle paar Sekunden, die Event-Source neu zu verbinden. Dadurch wird das PHP Script einfach neu gestartet. Dieser Retry führt zu der Intervall-Abfrage, die man im Beispiel sieht. Durch diesen Reconnect entsteht aber kein SSE, sondern ein hinter der EventSource verstecktes Polling.

Bei MDN gibt's ein Beispiel mit einer sleep-Schleife. Das ist schon eher das Richtige; der Serverprozess muss in dieser Schleife die DB abfragen und bei Änderungen das Event an den Client senden. Aber Polling ist das immer noch, nur nicht mehr vom Browser zum Server.

Eine vernünftige Implementierung muss aber noch anders aussehen, da braucht man entweder eine Signalisierung zwischen den PHP-Prozessen (Semaphore, Shared Memory, Named Pipes) oder aber EINEN Prozess, der alle SSE Requeste handhabt und der bei einem Ping des Masters ein Event an alle Slaves schickt. Letzteres dürfte mit PHP nicht gehen, es sei denn, du findest eine schlaue SSE Lib die mit Socket-IO herummacht und das selbst steuert. Node.js dürfte hier eher das Werkzeug der Wahl sein.

Das ist alles nicht trivial zu bauen und eine polling loop auf die DB oder ein File ist bei einem Chor mit nicht all zu vielen Sängern sicherlich billiger und einfacher.

Rolf

--
sumpsi - posui - clusi