Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Archiwum dla Listopad 10th, 2010

WebSocket

Autor: Piotr Karpiuk o 10. listopada 2010

Aby dowiedzieć się więcej o innych zagadnieniach związanych z nowym standardem HTML5, zajrzyj do osobnego artykułu.

HTTP jest protokołem zapytanie-odpowiedź z własnymi narzutami na niepotrzebne nagłówki, przez co słabo się nadaje na realizację kanału full-duplex czasu rzeczywistego. Podejmowano różne rozpaczliwe próby rozwiązania problemu – wszystkie słabo skalowalne, nadmiernie obciążające sieć i procesor, wolne, nierzadko podatne na błędy i skomplikowane:

  • Ajax polling,
  • Ajax long-polling: polling wstrzymujący odpowiedź serwera gdy nie ma danych do przesłania,
  • streaming: serwer odsyła odpowiedź ale nie sygnalizuje jej końca, przez co przeglądarka odbiera kolejne „uzupełnienia” będące kolejnymi komunikatami od serwera; problemem są tu serwery proxy po drodze, które nie widząc końca komunikatu mogą zdecydować o jego buforowaniu; rozwiązanie to użycie TLS (SSL) lub powrót do Ajax long-polling przy wykryciu buforujących proxy po drodze; Comet (zwany też Ajax Push, Reverse Ajax, Two-way web, HTTP streaming, HTTP server push) – to zbiorczy termin dla zestawu różnych technik sprowadzających się do tego że długo realizowana odpowiedź na żądanie HTTP z przeglądarki pozwala serwerowi WWW wpychać kolejne dane do klienta.

HTML5 WebSocket definiuje kanał komunikacyjny full-duplex przeznaczony dla sterowanych zdarzeniami aplikacji WWW „czasu rzeczywistego”. W chwili obecnej implementowany w Chrome 4.0+, Firefox 4.0+ i Safari 5.0+ (nie ma w MSIE i Operze).

Jeśli serwer WWW implementuje standard, wówczas w dowolnym momencie istniejące połączenie HTTP można łatwo przekształcić w połączenie WebSocket. Wystarczy, że przeglądarka wyśle do serwera komunikat HTTP:

    GET /demo HTTP/1.1
    Host: example.com
    Connection: Upgrade
    Sec-WebSocket-Key2: 12998 5 Y3 1 .P00
    Sec-WebSocket-Protocol: sample
    Upgrade: WebSocket
    Sec-WebSocket-Key1: 4@1 46546xW%0l 1 5
    Origin: http://example.com

    [8-byte security key]

Serwer odpowiada:
Czytaj więcej »

Tags: ,
Napisany w WWW | Brak komentarzy »