WebSocket

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

WebSocket je počítačový komunikační protokol, poskytující plně duplexní (obousměrný) komunikační kanál přes jediné TCP připojení. Protokol WebSocket byl standardizován komisí IETF jako RFC 6455 v roce 2011, a WebSocket API ve Webové IDL bylo standardizováno konsorciem W3C.

WebSocket je navržen tak, aby mohl být prováděn ve webových prohlížečích a na webových serverech, ale může být použita jakákoliv klientská a serverová aplikace. WebSocket je nezávislý protokol založený na základě TCP. Jeho jediný vztah k HTTP je, že jeho handshake (navázání spojení) je interpretováno HTTP servery jako požadavek na upgrade.[1] Protokol WebSocket umožňuje interakci mezi prohlížečem a webovým serverem s nižší režií, usnadňuje real-time přenos dat ze serveru a na server. To je možné proto, že poskytuje standardizovaný způsob pro odeslání obsahu ze serveru do prohlížeče, aniž by to bylo na požadavek klienta (jako v AJAXu), a umožňuje předání zpráv tam i zpět, zatímco je udržováno otevřené spojení. Tímto způsobem může probíhat obousměrná (bi‑directional) komunikace mezi prohlížečem a serverem. Tato komunikace probíhá přes TCP port číslo 80 (nebo 443 v případě TLS-šifrovaných spojení), což je výhoda pro ta prostředí, kde jsou newebová připojení k Internetu blokována firewallem. Podobně obousměrné komunikace prohlížeč-server bylo dosahováno nestandardizovanými způsoby používajícími provizorní technologie, jako je Comet.

Protokol WebSocket, je v současné době podporován ve většině hlavních prohlížečů, včetně Google Chrome, Microsoft Edge, MS Internet Exploreru, Firefoxu, Safari a Opeře. WebSocket však vyžaduje podporu také na straně serveru, i od webových aplikací.

Přehled[editovat | editovat zdroj]

Na rozdíl od HTTP, WebSocket umožňuje obousměrnou komunikaci.[2][3] Navíc, WebSocket umožňuje proudy zpráv na základě TCP. Vlastní TCP se zabývá proudy bajtů a ne vlastním konceptem zpráv. Před příchodem WebSocketu, byla obousměrná komunikace na portu 80 dosažitelná pomocí kanálů Comet; nicméně její realizace byla netriviální a vzhledem k režii TCP handshake a HTTP záhlaví nad sebou, je neefektivní pro malé zprávy. WebSocket protokol si klade za cíl řešit tyto problémy, bez ohrožení bezpečnostních předpokladů webu.

Protokol WebSocket specifikace definuje ws a wss jako dvě nové uniform resource identifier (URI) systémů[4] , které jsou používány pro nešifrované a případně šifrované spojení. Na rozdíl od režimu jméno a fragment (# není podporován), zbytek URI komponenty je definován pomocí obecné syntaxe URI.[5]

Pomocí prohlížeče Developer Tools, vývojáři mohou kontrolovat navazování spojení WebSocketu, stejně jako jeho rámců.[6]

Implementace v prohlížečích[editovat | editovat zdroj]

Zabezpečená verze protokolu WebSocket je implementována ve Firefoxu 6,[7] Safari 6, Google Chrome 14,[8] Opeře 12.10 a Internet Exploreru 10.[9] Podrobná zpráva z testů protokolu[10] uvádí shodu těchto prohlížečů na jeho konkrétní aspekty.

Starší, méně bezpečná verze protokolu byla realizována v Opeře 11 a Safari 5, stejně jako v mobilní verzi Safari v iOS 4.2.[11] BlackBerry prohlížeč v OS7 implementuje protokol WebSocket.[12] Z důvodu chyby v návrhu byl zakázán ve Firefoxu 4 a 5,[13] jakož i v Opeře 11.[14]

K dispozici je také přepínač příkazového řádku --enable-websocket-nad-spdy pro Google Chrome, které umožňuje používat rané experimentální implementace WebSocketu přes SPDY.[15]

stav
protokol,
verze
datum návrhu
 
Internet Explorer
 
Firefox[16]
(PC)
Firefox
(Android)
Chrome
(PC, přenosné)
Safari
(Mac, iOS)
Opera
(PC, přenosné)
Android Browser
 
hixie-75 4. února 2010 4 5.0.0
hixie-76
hybi-00
6. května 2010
23. května 2010
4.0 (vypnuto) 6 5.0.1 11.00 (vypnuto)
hybi-07, v7 22. dubna 2011 6[17][P 1]
hybi-10, v8 11. července 2011 7[19][P 2] 7 14[20]
rfc:6455, v13 prosinec 2011 10[21] 11 11 16[22] 6 12.10[23] 4.4

Odkazy[editovat | editovat zdroj]

Poznámky[editovat | editovat zdroj]

  1. Gecko-based browsers versions 6–10 implement the WebSocket object as "MozWebSocket",[18] requiring extra code to integrate with existing WebSocket-enabled code.
  2. {{{1}}}

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku WebSocket na anglické Wikipedii.

  1. FETTE, Ian; MELNIKOV, Alexey. RFC 6455 The WebSocket Protocol [online]. IETF, prosinec 2011. Kapitola 1.7. 
  2. Dostupné online. 
  3. HTML5 WebSocket: A Quantum Leap in Scalability for the Web
  4. Dostupné online. 
  5. Ian Fette; Alexey Melnikov (December 2011).
  6. [s.l.]: [s.n.] Dostupné online. ISBN 978-1-4302-4740-1. 
  7. Dostupné online. 
  8. Dostupné online. 
  9. Dostupné online. 
  10. Dostupné online. 
  11. Dostupné online. 
  12. Dostupné online. 
  13. Dostupné online. 
  14. Dostupné online. 
  15. Dostupné online. 
  16. Dostupné online. 
  17. Dostupné online. 
  18. Dostupné online. 
  19. Dostupné online. 
  20. Dostupné online. 
  21. Dostupné online. 
  22. Dostupné online. 
  23. Dostupné online. 

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]