WebSocket

WebSocket Information
Funktion Bidirektionale Kommunikation über eine TCP-Verbindung für Webbrowser
Akronym ws
Erstellungsdatum 2011
Hafen 80 und 443
RFC 6455

WebSocket ist ein Web - Standard ein Bezeichnen Netzwerk - Protokoll der Anwendungsschicht und eine Programmierschnittstelle des World Wide Web erstellen Vollduplex - Kommunikationskanäle über eine TCP - Verbindung für Web - Browser. Das Protokoll wurde 2011 von der IETF in RFC  6455 und die Programmierschnittstelle vom W3C standardisiert .

Allgemeine Grundsätze

Das WebSocket-Protokoll ermöglicht das Öffnen eines bidirektionalen (oder " Vollduplex ") Kommunikationskanals auf einem TCP- Socket für Browser und Webserver . Insbesondere erlaubt es daher:

Die Notwendigkeit der bidirektionalen Webkommunikation, Client / Server

Die zunehmende Interaktivität von Webanwendungen nach der Verbesserung der Browserleistung machte es schnell erforderlich, bidirektionale Kommunikationstechniken zwischen der Client-Webanwendung und den Serverprozessen zu entwickeln. Techniken, die auf dem Anforderungsaufruf des Clients über das XMLHttpRequest-Objekt und der Verwendung von HTTP-Anforderungen mit einem langen TTL- Typ basieren, die vom Server für eine nachfolgende Antwort an den Client gespeichert wurden, haben es möglich gemacht, diesen Mangel zu überwinden, und wurden durch die erfolgreichen Ajax- Architekturen populär gemacht .

Laut dem Informatiker Stéphane Bortzmeyer bietet "WebSocket Anwendungen daher praktisch den gleichen Service wie TCP" , hat jedoch den Vorteil, dass die vielen Zwischenhindernisse für Netzwerkflüsse ( Firewalls usw.) im "Dschungel", der zum heutigen Web wird, umgangen werden . Durch die Verwendung der HTTP-Architektur (Relay, Authentifizierung, Ports 80 und 443) und sehr wenig Filterung zur Erstellung eines neuen Transportprotokolls möchten die Entwickler von Websocket eine bidirektionale Netzwerkkommunikation sicherstellen, die nicht mehr über TCP garantiert werden kann. Die Hauptbeschränkung von Websocket besteht darin, dass es sich nicht um ein allgemeines Protokoll handelt: Die Kommunikation muss unbedingt über den Webbrowser des Clients oder über bestimmte dedizierte Bibliotheken erfolgen (siehe Abschnitt „Implementierungen“ ).

Die WebSocket-API

Die WebSocket-Programmierschnittstelle wurde innerhalb der WHATWG entwickelt .

Kontroversen

Netzwerkarchitektur

Das Prinzip von WebSocket wurde während seiner Entwicklung in den Spezifikationsgremien in Frage gestellt, da es wohl besser war, die in der Netzwerkschicht gefundenen Filterprobleme zu lösen, als ein neues Protokoll darüber der Anwendungsschicht zu erstellen.

Sicherheit

In der API früherer Versionen von Websocket wurde eine Sicherheitslücke entdeckt. Die Sicherheit beim Surfen wurde beeinträchtigt, indem während der Handshake- Phase   eine JavaScript-Datei durch Malware ersetzt wurde. Da sich dieser Fehler in der API selbst befindet, konnte er durch keinen Patch im Browser behoben werden. In einigen Versionen von Browsern wie Firefox 4 und 5, Opera 11 und Internet Explorer 9 wurde WebSocket aufgrund dieses Fehlers deaktiviert.
Die Sicherheitslücke in Firefox wurde von Firefox 6 (Gecko 6.0-Engine) behoben.
Internet Explorer hat den Websocket mit IE10 implementiert.
In Opera war es immer möglich, den Websocket wieder zu aktivieren. Ab Opera 12 ist der Websocket aktiviert.

Implementierungen

Browser

Eigenschaften Chrom Firefox (Gecko) Internet Explorer Oper Safari
Unterstützung für Version -76 6 4,0 (2,0) Keine Unterstützung 11.00 (deaktiviert) 5.0.1
Unterstützung für Protokollversion 7 Keine Unterstützung 6.0 Keine Unterstützung Keine Unterstützung Keine Unterstützung
Unterstützung für Protokollversion 10 14 7.0 HTML5 Labs ? ?
Standard - RFC 6455- Unterstützung 16 11.0 10 12.10 6

Software-Bibliotheken

Java VS C ++
  • QtWebsocket , eine Client- und Server-Implementierung des Websocket-Protokolls in C ++ (erfordert das Qt- Framework );
Python PHP
  • Wrench (früher PHP-Websocket ), PHP-Implementierung auf der Serverseite und PHP / HTML5 auf der Clientseite;
Javascript
  • ScaleDrone , Javascript-Implementierung des Protokolls für REST, Node.js , PHP , Ruby  ;
  • Socket.io , Javascript-Implementierung des Protokolls für Node.js  ;
Andere
  • APE-Projekt , Unterstützung des WebSocket-Protokolls (-hixie-75, -hixie-76, -hybi-ietf-06, -hybi-ietf-07);
  • PubNub , Implementierung mit einer API, die mit allen von Mobil-, Web- und IoT-Technologien verwendeten Sprachen kompatibel ist, kostenloser oder kostenpflichtiger Service;
  • Pusher , API-Implementierung, die mit den meisten Sprachen kompatibel ist;
  • SignalR , Implementierung für ASP.NET in C #  ;
  • Einfache Komponenten , Implementierung in Ada, die vom Gnoga- Framework verwendet wird
  • Protocol :: WebSocket , Perl-Implementierung des Protokolls;
  • Websocketd , eine ausführbare Datei, mit der Sie ein in einer beliebigen Sprache geschriebenes Programm verwenden können, um einen Websocket-Server zu starten.

Anmerkungen und Referenzen

  1. (in) "  Das WebSocket-Protokoll  " auf tools.ietf.org (abgerufen am 17. April 2017 )
  2. (in) "  The WebSocket - Protokoll  ," Antrag auf Kommentare n o  6455Dezember 2011.
  3. https://www.w3.org/TR/websockets/
  4. Stéphane Bortzmeyer, „  RFC 6455: Das WebSocket-Protokoll  “ , auf www.bortzmeyer.org ,11. Dezember 2011(abgerufen am 12. April 2021 )
  5. (in) Neue Webplattform, deren WebSocket-API neben dem neuen HTML5-Standard entwickelt wird.
  6. "  [hybi] Experiment zum Vergleichen von Upgrade- und CONNECT-Handshakes  " , unter www.ietf.org (abgerufen am 17. April 2017 )
  7. „  WebSockets  “ im Mozilla Developer Network (abgerufen am 17. April 2017 )
  8. "  WebSocket API (Windows)  " unter msdn.microsoft.com (abgerufen am 17. April 2017 )
  9. (in) David Honneffer, Dokumentation Specialist , "  Opera Software: API - Unterstützung in Opera Presto 2.12  " auf www.opera.com (Zugriff 17. April 2017 )
  10. (in) Project jWebSocket , freie Software, die unter der General Public License GNU Lesser vertrieben wird .
  11. (in) "  libwebsockets  " auf libwebsockets.org
  12. (de) Projekt Apache-Websocket , Software kostenlos unter Apache 2.0 .
  13. (in) Projekt pywebsocket , freie Software unter modifizierter BSD-Lizenz .
  14. (in) Project Wrench , freie Software, die unter der WTFPL vertrieben wird .
  15. (in) EPA-Projekt , Freie Software, veröffentlicht unter der GNU General Public License .
  16. (in) Einzelkomponenten für Ada
  17. (en) Gnoga

Siehe auch

Zum Thema passende Artikel

Externe Links