Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Server-Sent Events

Autor: Piotr Karpiuk o 19. listopada 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.

Tags: ,
Napisany w WWW | Brak komentarzy »