HTML Server-Sent-tapahtumat
- Edellinen sivu HTML5-web-työläiset
- Seuraava sivu HTML-esimerkit
Server-Sent-tapahtumat sallivat verkkosivun saada päivityksiä palvelimelta.
Server-Sent-tapahtumat - Yksisuuntainen viestintä
Server-Sent-tapahtumat tarkoittavat, että verkkosivu saa päivityksiä automaattisesti palvelimelta.
Tämä voisi olla mahdollista aiemmin, mutta verkkosivun oli kysyttävä, onko päivityksiä saatavilla. Server-Sent-tapahtumien avulla päivitykset voivat saapua automaattisesti.
Esimerkiksi: Facebook/Twitter-päivitykset, osakkeiden hinnat, uudet blogipostaukset, kilpailutulokset jne.
Selaimen tuki
Taulukossa olevat numerot viittaavat ensimmäisiin selaimiin, jotka tukevat server-sent-tapahtumia täysin.
API | |||||
SSE | 6.0 | Ei tuettu | 6.0 | 5.0 | 11.5 |
Vastaanota Server-Sent tapahtumien ilmoitukset
EventSource-objekti käytetään palvelimen lähettämien tapahtumien vastaanottamiseen:
Esimerkki
var source = new EventSource("demo_sse.php"); source.onmessage = function(event) { document.getElementById("result").innerHTML += event.data + "<br>"; };
Esimerkki selitetään:
- Luo uusi EventSource-objekti ja määritä päivitettävän sivun URL (tässä tapauksessa "demo_sse.php")
- Kun saadaan uusi päivitys, tapahtuu onmessage-tapahtuma
- Kun onmessage-tapahtuma tapahtuu, lisätään vastaanotettu tieto elementtiin, jonka id on "result"
Tarkista Server-Sent tapahtumien tuki
TIY-esimerkissä kirjoitimme lisää koodia palvelimen lähettämien tapahtumien selaimen tuen tarkistamiseksi:
if(typeof(EventSource) !== "undefined") { // Kyllä! Tukee palvelimen lähettämiä tapahtumia! // Jotain koodia..... } else { // anteeksi! Ei tueta palvelimen lähettämiä tapahtumia! }
Palvelinpuolen koodiesimerkki
Jotta esimerkki toimisi, sinun on kyettävä lähettämään tietoupdoksia palvelimelle (esim. PHP tai ASP).
Palvelimellinen tapahtumavirta on erittäin yksinkertainen. Aseta otsikkoon "Content-Type" arvo "text/event-stream". Nyt voit aloittaa tapahtumavirran lähettämisen.
PHP:ssa oleva koodi (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(); ?>
ASP:ssa oleva koodi (VB) (demo_sse.asp):
<% Response.ContentType = "text/event-stream" Response.Expires = -1 Response.Write("data: The server time is: " & now()) Response.Flush() %>
Koodin selitys:
- Aseta otsikkoon "Content-Type" arvo "text/event-stream"
- Määritä sivun ei tallenneta välimuistiin
- Määritä lähetettävän tiedon päivämäärä (alkaen aina "data: "-merkillä)
- Tuo tietoja sivun uudelleenlataamiseen
EventSource-objekti
Yllä olevassa esimerkissä käytämme onmessage-tapahtumaa viestin saamiseksi. Voimme kuitenkin käyttää myös muita tapahtumia:
Tapahtuma | Kuvaus |
---|---|
onopen | Kun yhteys palvelimeen avataan |
onmessage | Viestin vastaanotettaessa |
onerror | Virheen tapahtuessa |
- Edellinen sivu HTML5-web-työläiset
- Seuraava sivu HTML-esimerkit