English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Eventi inviati dal server HTML5

Gli eventi inviati dal server (server-sent event) di HTML5 permettono alla pagina web di ottenere i dati più recenti dal server senza dover aggiornare la pagina, permettendo di ottenere dati dinamici in tempo reale.

Eventi inviati dal server - trasmissione di messaggi unidirezionali

Gli eventi inviati dal server (Server-Sent Events) sono eventi che permettono alla pagina web di ottenere aggiornamenti automatici dei dati dal server.

Metodi tradizionali per ottenere i dati più recenti dal server: tramite aggiornamento o tramite timer. Ora, tramite eventi inviati dal server (Server-Sent Events), è possibile ottenere automaticamente i dati più recenti.

Esempio: aggiornamenti Facebook/Twitter, dati di mercato, microblog, risultati delle gare sportive, messaggi dinamici, commenti, ecc.

Supporto del browser

Tutti i browser principali supportano gli eventi inviati dal server, eccetto Internet Explorer.

Ricezione di notifiche di eventi inviati dal server

L'oggetto EventSource viene utilizzato per ricevere notifiche di eventi inviati dal server:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Manuale di base del sito web (oldtoolbag.com)</title>
</head>
<body>
<h1> Ottieni i dati più recenti del server</h1>
<div id="result"></div>
<script>
if(typeof(EventSource)!=="undefined")
{
    var source=new EventSource("demo-sse.php");
    source.onmessage=function(event)
    {
        document.getElementById("result").innerHTML+=event.data + "<br>";
    };
}
else
{
    document.getElementById("result").innerHTML="Dispiace, il tuo browser non supporta gli eventi server-sent...";
}
</script>
</body>
</html>
Prova a vedere ‹/›

Esempio di analisi:

  • Crea un nuovo oggetto EventSource, quindi specifica l'URL della pagina che invia gli aggiornamenti (nel presente esempio è "demo_sse.php")

  • Si verifica l'evento onmessage ogni volta che si riceve un aggiornamento

  • Quando si verifica l'evento onmessage, inserisci i dati ricevuti nell'elemento con id "result"

Verifica della supportazione degli eventi Server-Sent

Nei seguenti esempi, abbiamo scritto un codice aggiuntivo per verificare la supportazione del browser per gli eventi in streaming del server:

if(typeof(EventSource)!=="undefined")
{
    // Il browser supporta Server-Sent
    // Alcuni codici.....
}
else
{
    // Il browser non supporta Server-Sent..
}

Esempio di codice del server

Per far funzionare l'esempio sopra, hai bisogno anche di un server in grado di inviare aggiornamenti di dati (ad esempio PHP e ASP).

La sintassi degli eventi in streaming del server è molto semplice. Imposta l'intestazione 'Content-Type' a 'text/event-stream'. Ora, puoi iniziare a inviare lo streaming degli eventi.

Esempio online

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server current time: {$time}\n\n";
flush();
?>

Codice ASP (VB) (demo_sse.asp):

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

Spiegazione del codice:

  • Imposta l'intestazione "Content-Type" a "text/event-stream"

  • Non memorizzare la pagina nella cache

  • Output della data di invio (sempre inizia con "data: ")

  • Output di dati di aggiornamento della pagina web

Oggetto EventSource

Nell'esempio sopra, utilizziamo l'evento onmessage per ottenere messaggi. Tuttavia, è possibile utilizzare altri eventi:

EventoDescrizione
onopenQuando si apre la connessione al server
onmessageQuando si riceve un messaggio
onerrorQuando si verifica un errore