Sono nuovo su SSE e sto seguendo lo w3schools tutorial. Ho aggiunto del codice al loro esempio in modo da poter vedere quando viene aperta la connessione e quando si verifica un errore. Qui è il mio codice:HTML5 Server-Eventi inviati onerror visualizzati ogni 3 secondi
<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>
E il mio codice lato server:
<?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();
?>
La documentazione dice che
Un evento server inviato è quando una pagina web riceve automaticamente aggiornamenti da un server. Anche questo era possibile prima, ma la pagina web avrebbe dovuto chiedere se erano disponibili aggiornamenti. Con gli eventi inviati dal server, gli aggiornamenti vengono automaticamente.
ma la console ci mostra il contrario:
Il lato client richiede una nuova connessione, ottenere il messaggio, un errore si verifica e la connessione viene chiusa. Questo viene ripetuto ogni 3 secondi. Perché sta succedendo?