WebSocket

WebSocket Informace
Funkce Obousměrná komunikace přes připojení TCP pro webové prohlížeče
Akronym ws
Datum vzniku 2011
Přístav 80 a 443
RFC 6455

Websocket je Web standardní určení síťový protokol na aplikační vrstvě a programovací rozhraní na World Wide Web pro vytvoření plně duplexní komunikační kanály přes TCP spojení pro webové prohlížeče. Protokol byl standardizován IETF v RFC  6455 v roce 2011 a programovací rozhraní W3C .

Obecné zásady

Protokol WebSocket se používá k otevření obousměrného (nebo „ plně duplexního “) komunikačního kanálu na soketu TCP pro prohlížeče a webové servery . Přesněji tedy umožňuje:

Potřeba obousměrné webové komunikace, klient / server

Zvyšující se interaktivita webových aplikací, následovaná zlepšením výkonu prohlížeče, rychle způsobila nutnost vyvinout obousměrné komunikační techniky mezi klientskou webovou aplikací a procesy serveru. Techniky založené na volání požadavku klientem prostřednictvím objektu XMLHttpRequest a použití požadavků HTTP s dlouhým typem TTL uloženým serverem pro následnou odpověď klientovi umožnily překonat tento nedostatek a byly popularizovány úspěšnými Ajaxovými architekturami .

Podle počítačový vědec Stéphane Bortzmeyer , „websocket proto nabízí prakticky stejné služby k aplikacím jako TCP“ , ale má tu výhodu, že obchází mnoho zprostředkující překážek do sítě toků ( firewally atd.) V „džungli“, která se stala současná Web . Pomocí architektury protokolu HTTP (relé, ověřování, porty 80 a 443), velmi malého filtrování, k vytvoření nového transportního protokolu se tvůrci Websocket snaží zajistit obousměrnou síťovou komunikaci, která již nebyla zaručena prostřednictvím TCP. Hlavní omezení Websocketu je, že nejde o obecný protokol: komunikace musí být nutně prováděna prostřednictvím webového prohlížeče klienta nebo prostřednictvím určitých specializovaných knihoven (viz část „Implementace“ ).

WebSocket API

Programovací rozhraní WebSocket bylo vyvinuto v rámci WHATWG .

Kontroverze

Síťová architektura

Samotný princip WebSocket byl zpochybněn v rámci specifikačních orgánů během jeho vývoje, jménem toho, že bylo pravděpodobně lepší vyřešit problémy s filtrováním nalezené v síťové vrstvě než vytvořit nový protokol nad ní. Aplikační vrstvy.

bezpečnostní

Bezpečnostní chyba byla objevena v API dřívějších verzí websocket. Zabezpečení bylo při procházení narušeno nahrazením  souboru JavaScript malwarem během fáze  handshake . Jelikož je tato chyba v samotném API, nemohla být opravena žádnou opravou v prohlížeči. V některých verzích prohlížečů, jako jsou Firefox 4 a 5, Opera 11 a Internet Explorer 9, byl WebSocket kvůli této chybě deaktivován.
Bezpečnostní chyba ve Firefoxu byla opravena z Firefoxu 6 (Gecko 6.0 engine).
Internet Explorer implementoval websocket s IE10.
V prohlížeči Opera bylo vždy možné websocket znovu aktivovat. Z Opery 12 se aktivuje websocket.

Implementace

Prohlížeče

Vlastnosti Chrom Firefox (Gecko) internet Explorer Opera Safari
Podpora verze -76 6 4,0 (2,0) Bez podpory 11,00 (deaktivováno) 5.0.1
Podpora protokolu verze 7 Bez podpory 6.0 Bez podpory Bez podpory Bez podpory
Podpora protokolu verze 10 14 7.0 Laboratoře HTML5 ? ?
Standardní - podpora RFC 6455 16 11.0 10 12.10 6

Softwarové knihovny

Jáva VS C ++
  • QtWebsocket , implementace protokolu Websocket v C ++ na straně klienta a serveru (vyžaduje rámec Qt );
Krajta PHP
  • Klíč (dříve php-websocket ), implementace PHP na straně serveru a PHP / HTML5 na straně klienta;
Javascript
  • ScaleDrone , implementace protokolu javascript pro REST, Node.js , PHP , Ruby  ;
  • Socket.io , implementace protokolu javascript protokolu pro Node.js  ;
jiný
  • APE Project , podpora protokolu WebSocket (-hixie-75, -hixie-76, -hybi-ietf-06, -hybi-ietf-07);
  • PubNub , implementace nabízející API, kompatibilní se všemi jazyky používanými mobilními, webovými a IoT technologiemi, bezplatnou nebo placenou službou;
  • Pusher , implementace API kompatibilní s většinou jazyků;
  • SignalR , implementace pro ASP.NET v C #  ;
  • Jednoduché komponenty , implementace v Adě používaná frameworkem Gnoga
  • Protocol :: WebSocket , Perl implementace protokolu;
  • Websocketd , spustitelný soubor, který umožňuje ke spuštění serveru websocket použít program napsaný v jakémkoli běžném jazyce.

Poznámky a odkazy

  1. (in) „  The WebSocket Protocol  “ na tools.ietf.org (přístup 17. dubna 2017 )
  2. (in) "  The websocket protokolu  ," Request for Comments n °  6455prosince 2011.
  3. https://www.w3.org/TR/websockets/
  4. Stéphane Bortzmeyer, „  RFC 6455: The websocket protokol  “ , na www.bortzmeyer.org ,11. prosince 2011(zpřístupněno 12. dubna 2021 )
  5. (in) Nová webová platforma, kterou WebSocket API vyvíjí společně s novým standardem HTML5.
  6. „  [hybi] Experiment srovnávající handshake Upgrade a CONNECT  “ , na www.ietf.org (přístup 17. dubna 2017 )
  7. „  WebSockets  “ , na Mozilla Developer Network (přistupovat 17. dubna 2017 )
  8. „  WebSocket API (Windows)  “ na msdn.microsoft.com (přístup 17. dubna 2017 )
  9. (in) David Honneffer, specialista na dokumentaci , „  Opera Software: Podpora API v Opera Presto 2.12  “ na www.opera.com (přístup 17. dubna 2017 )
  10. (in) Project jWebSocket , bezplatný software distribuovaný pod General Public License GNU Lesser .
  11. (in) „  libwebsockets  “ na libwebsockets.org
  12. (en) Projekt apache-websocket , software zdarma pod Apache 2.0 .
  13. (in) Project pywebsocket , svobodný software pod upravenou licencí BSD .
  14. (in) Project Wrench , bezplatný software distribuovaný pod WTFPL .
  15. (in) EPA Project , svobodný software vydaný pod GNU General Public License .
  16. (in) Jednotlivé komponenty pro Ada
  17. (en) Gnoga

Podívejte se také

Související články

externí odkazy