Gli ultimi tutorial di sviluppo web

HTML5 Eventi Server-Sent


Eventi Server-Sent permettono una pagina web per ottenere gli aggiornamenti da un server.


Eventi Server-Sent - One Way Messaging

Un evento server inviato è quando una pagina web riceve automaticamente gli aggiornamenti da un server.

Questo è stato possibile anche prima, ma la pagina web avrebbe dovuto chiedere se eventuali aggiornamenti erano disponibili. Con gli eventi del server-inviato, gli aggiornamenti vengono automaticamente.

Esempi: Facebook/Twitter aggiornamenti, aggiornamenti di prezzo delle azioni, feed di notizie, risultati sportivi, ecc


Supporto browser

I numeri nella tabella indicano la prima versione del browser che supportano pienamente gli eventi del server-inviato.

API
SSE 6.0 Non supportato 6.0 5.0 11.5

Ricevi notifiche Event Server-Sent

EventSource oggetto viene utilizzato per ricevere le notifiche degli eventi server inviate:

Esempio

var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
    document.getElementById("result").innerHTML += event.data + "<br>";
};
Prova tu stesso "

Esempio spiegato:

  • Creare un nuovo EventSource oggetto, e specificare l'URL della pagina di invio degli aggiornamenti (in this example "demo_sse.php")
  • Ogni volta che un aggiornamento è ricevuto, il onmessage si verifica un evento
  • Quando un onmessage verifica un evento, inserire i dati ricevuti all'interno dell'elemento con id="result"

Controllare Eventi Support Server-Sent

Nel tryit Nell'esempio precedente ci sono state alcune righe in più di codice per controllare il supporto del browser per gli eventi server-inviato:

if(typeof(EventSource) !== "undefined") {
    // Yes! Server-sent events support!
    // Some code.....
} else {
    // Sorry! No server-sent events support..
}

Lato server Esempio di codice

Per l'esempio precedente funzioni, è necessario un server in grado di inviare gli aggiornamenti dei dati (come PHP o ASP).

La sintassi flusso di eventi sul lato server è semplice. Impostare il "Content-Type" intestazione per "text/event-stream" . Ora è possibile iniziare a inviare flussi di eventi.

Codice in PHP (demo_sse.php) :

<?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();
?>

Codice in ASP (VB) (demo_sse.asp) :

<%
Response.ContentType = "text/event-stream"
Response.Expires = -1
Response.Write("data: The server time is: " & now())
Response.Flush()
%>

Codice ha spiegato:

  • Impostare il "Content-Type" intestazione per "text/event-stream"
  • Specificare che la pagina non dovrebbe memorizzare nella cache
  • Output i dati da inviare ( Always start with "data: ")
  • Lavare i dati in uscita di nuovo alla pagina web

L'Oggetto EventSource

Negli esempi sopra abbiamo utilizzato l'evento onMessage per ottenere i messaggi. Ma altri eventi sono disponibili anche:

eventi Descrizione
onopen Quando una connessione al server viene aperta
onmessage Quando viene ricevuto un messaggio
onerror Quando si verifica un errore