WebSocket

Z Wikipedie, otevřené encyklopedie
Skočit na navigaci Skočit na vyhledává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, nejen klienta (prohlížeče) a jeho JavaScriptu.

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 1] 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. a b Gecko-based browsers versions 6–10 implement the WebSocket object as "MozWebSocket",[18] requiring extra code to integrate with existing WebSocket-enabled code.

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. Glossary:WebSockets [online]. Mozilla Developer Network, 2015. Dostupné online. (anglicky) 
  3. HTML5 WebSocket: A Quantum Leap in Scalability for the Web
  4. IANA Uniform Resource Identifer (URI) Schemes [online]. Internet Assigned Numbers Authority, 2011-11-14 [cit. 2011-12-10]. Dostupné online. (anglicky) 
  5. Ian Fette; Alexey Melnikov (December 2011).
  6. WANG, Vanessa; SALIM, Frank; MOSKOVITS, Peter. The Definitive Guide to HTML5 WebSocket. [s.l.]: Apress, February 2013. Dostupné online. ISBN 978-1-4302-4740-1. Kapitola APPENDIX A: WebSocket Frame Inspection with Google Chrome Developer Tools. [nedostupný zdroj]
  7. Dirkjan Ochtman. WebSocket enabled in Firefox 6 [online]. May 27, 2011 [cit. 2011-06-30]. Dostupné online. (anglicky) 
  8. Chromium Web Platform Status [online]. [cit. 2011-08-03]. Dostupné online. (anglicky) 
  9. WebSockets (Windows) [online]. Microsoft, 2012-09-28 [cit. 2012-11-07]. Dostupné online. (anglicky) 
  10. WebSockets Protocol Test Report [online]. Tavendo.de, 2011-10-27 [cit. 2011-12-10]. Dostupné v archivu pořízeném dne 2012-04-19. (anglicky) 
  11. Katie Marsal. Apple adds accelerometer, WebSockets support to Safari in iOS 4.2 [online]. November 23, 2010 [cit. 2011-05-09]. Dostupné online. (anglicky) 
  12. Web Sockets API [online]. BlackBerry [cit. 2011-07-08]. Dostupné v archivu pořízeném dne June 10, 2011. (anglicky) 
  13. Chris Heilmann. WebSocket disabled in Firefox 4 [online]. December 8, 2010 [cit. 2011-05-09]. Dostupné online. (anglicky) 
  14. Aleksander Aas. Regarding WebSocket [online]. December 10, 2010 [cit. 2011-05-09]. Dostupné v archivu pořízeném dne 2010-12-15. (anglicky) 
  15. Peter Beverloo. List of Chromium Command Line Switches [online]. [cit. 2011-12-10]. Dostupné online. (anglicky) 
  16. WebSockets (support in Firefox) [online]. Mozilla Foundation, 2011-09-30 [cit. 2011-12-10]. Dostupné online. (anglicky) 
  17. Bug 640003 - WebSockets - upgrade to ietf-06 [online]. Mozilla Foundation, 2011-03-08 [cit. 2011-12-10]. Dostupné online. (anglicky) 
  18. WebSockets - MDN [online]. Mozilla Foundation, 2011-09-30 [cit. 2011-12-10]. Dostupné online. (anglicky) 
  19. Bug 640003 - WebSockets - upgrade to ietf-07(comment 91) [online]. Mozilla Foundation, 2011-07-22. Dostupné online. (anglicky) 
  20. Chromium bug 64470 [online]. Google, 2010-11-25 [cit. 2011-12-10]. Dostupné online. (anglicky) 
  21. WebSockets in Windows Consumer Preview [online]. Microsoft, 2012-03-19 [cit. 2012-07-23]. Dostupné online. (anglicky) 
  22. WebKit Changeset 97247: WebSocket: Update WebSocket protocol to hybi-17 [online]. [cit. 2011-12-10]. Dostupné online. (anglicky) 
  23. A hot Opera 12.50 summer-time snapshot [online]. Opera Developer News, 2012-08-03 [cit. 2012-08-03]. Dostupné v archivu pořízeném dne 2012-08-05. (anglicky) 

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

Externí odkazy[editovat | editovat zdroj]