WebSocket

Z Wikipedie, otevřené encyklopedie

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

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

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

Poznámky


Reference

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 z originálu 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 z originálu dne 2012-08-05. (anglicky) 

Související články

Externí odkazy


Chybná citace: Nalezena značka <ref> pro skupinu „P“, ale neexistuje příslušná značka <references group="P"/>