Ich bin neu auf SSE und ich folge dem w3schools tutorial. Ich habe ihrem Beispiel Code hinzugefügt, damit ich sehen kann, wann die Verbindung geöffnet wird und wann ein Fehler auftritt. Hier ist mein Code:HTML5 Server-Gesendete Ereignisse Ein Fehler wird alle 3 Sekunden angezeigt
<script>
var source = new EventSource("sse.php");
source.addEventListener('message', function(e) {
console.log("onmessage");
document.getElementById("result").innerHTML += event.data + "<br>";
}, false);
source.addEventListener('open', function(e) {
console.log("onopen");
}, false);
source.addEventListener('error', function(e) {
console.log('error '+e.readyState);
}, false);
</script>
Und mein serverseitigen Code:
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>
Die Dokumentation sagt, dass
Ein Server gesendet Ereignis ist, wenn eine Web-Seite automatisch erhält Updates von ein Server. Dies war auch vorher möglich, , aber die Webseite müsste fragen, ob irgendwelche Updates verfügbar waren. Bei serverseitigen Ereignissen werden die Aktualisierungen automatisch ausgeführt.
Aber die Konsole zeigt uns das Gegenteil:
Die clientseitige wird eine neue Verbindung anfordert, wird die Meldung bekommen, ein Fehler auftritt und die Verbindung geschlossen wird. Dies wird alle 3 Sekunden wiederholt. Warum passiert dies?