Co WebSocket umožňuje developerům webů a aplikací?

Především odbourat bariéry, které mají ostatní způsoby komunikace, jako například AJAX. Díky JavaScriptu je snadné využít WebSocket v internetových prohlížečích i aplikacích, které tak mohou navázat trvalé spojení se servery, komunikovat s nimi v reálném čase a obousměrně. Detaily najdete v dokumentaci WebSocket objektu v JavaScriptu na developer.mozilla.org.

Websocket for developers (in English)  -  Technické informace pro programátory

Krátce, co WebSocket poskytuje:

  • možnost tisíců souběžně připojených zařízení (aplikací) k jednomu serveru (do jedné sítě)
  • obousměrnou (plně duplexní) komunikaci mezi připojenými aplikacemi a servery
  • komunikaci v reálném čase (zpoždění v jednotkách až desítkách milisekund)
  • odesílání dat bez nutnosti jejich vyžádání příjemcem (aplikací)
  • okamžité odeslání dat bez nutnosti otevírání nových spojení

Jaká jsou omezení a limity WebSocketu?

Jako u každé technologie, tak i WebSocket má svá omezení a limity, které jsou však oproti ostatním komunikačním protokolům přijatelné a zásadně neomezují web developery při vývoji real-time aplikací. Mezi limity a omezení patří především:

  • Maximální počet zpráv odeslaných z webového prohlížeče (např. Firefox umožňuje odeslat maximálně 5 zpráv za sekundu). To však bohatě dostačuje pro drtivou většinu webových aplikací. Příjem zpráv zásadně omezen není.
  • Maximální počet otevřených WebSocketů z jedné stránky prohlížeče je cca 25 (Firefox). Počet se liší podle konkrétních prohlížečů. Komunikaci je však možné agregovat do jednoho WebSocketu, pokud je připojen ke stejnému serveru.
  • Nutnost využití cookie pro navázání WebSocket spojení se serverem. Bez cookie není možné autorizovat uživatele a navázat spojení, které by umožnilo zasílání zpráv konkrétním uživatelům (lze pak odesílat jen hromadné zprávy).
  • Složitější implementace na serveru, kde musí běžet služby, ke kterým se aplikace přes WebSocket připojují. Většina běžných webhostingů WebSockety nepodporuje a je třeba vlastní server, nebo WebSocket infrastrukturu jako službu (IaaS).

Výhody WebSocket komunikace oproti AJAXu

Největší výhodou WebSocketu je obousměrná komunikace v reálném čase. AJAX je skvělá technologie například pro načítání dynamického obsahu do webových stránek, nebo zasílání formulářových dat z webového prohlížeče na server, nicméně nejedná se o plnohodnotnou obousměrnou komunikaci. Pokud chcete odeslat data ze serveru do prohlížeče, musíte vyčkat, až si o ně prohlížeč požádá například AJAX nebo běžným HTTP požadavkem.

Oproti tomu WebSocket umožňuje odesílat data ze serveru do aplikace v prohlížeči i bez toho, aby si o ně aplikace požádala. Přímé odeslání dat je možné v obou směrech (server-klient i naopak). Zároveň s odesíláním mohou server i aplikace data přijímat.

Další výhodou WebSocketu oproti AJAX komunikaci je mnohonásobný počet (tisíce) současně připojených uživatelů k serveru. Výhodou pro mobilní aplikace je také velice nízká datová náročnost na obsluhu samotného WebSocketového spojení. Neposílají se totiž s každou datovou zprávou požadavky na otevření nového spojení jako v případě AJAX komunikace.