Server-Sent Events
Autor: Piotr Karpiuk o piątek 19. Listopad 2010
SSE to kolejna technologia komunikacji serwera z przeglądarką w ramach nowego standardu HTML5. Pozwala ona zestawić wydajny, jednokierunkowy kanał komunikacyjny w którym serwer pcha komunikaty do przeglądarki (aktualizacja statusu, zmiany kursów akcji, itp.). W odróżnieniu od WebSockets nie wymaga implementowania nowego protokołu i wykorzystuje HTTP. W kodzie JavaScript strony piszemy:
var source = new EventSource('http://localhost/blog/events.php'); source.addEventListener('message', function (event) { alert(event.data); });
Gdy połączenie HTTP zostanie zerwane, przeglądarka automatycznie zestawi nowe.
Oprócz zdarzenia message
przeglądarka może również nasłuchiwać zdarzeń open
(gdy kanał zostanie otwarty) i error
(gdy wystąpi błąd), oraz zamknąć kanał wykonując close()
na obiekcie EventSource
.
Od strony serwera istotne jest aby nagłówek HTTP zawierał pozycje:
Content-Type: text/event-stream Cache-Control: no-cache
Każdy komunikat ma postać:
data: first linen data: second linenn
Tzn. może być wielowierszowy przy czym każdy wiersz zaczyna się prefiksem data:
, a kończy się podwójnym znakiem końca wiersza.