« WebSocket » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Delhovlyn (discuter | contributions)
→‎Implémentations : phpwebsocket →
Ligne 24 : Ligne 24 :
* ''APE Project'', support du protocole WebSocket (-hixie-75, -hixie-76, -hybi-ietf-06, -hybi-ietf-07)<ref>{{en}} [http://www.ape-project.org/ APE Project], logiciel libre distribué sous la [[licence publique générale GNU]].</ref> ;
* ''APE Project'', support du protocole WebSocket (-hixie-75, -hixie-76, -hybi-ietf-06, -hybi-ietf-07)<ref>{{en}} [http://www.ape-project.org/ APE Project], logiciel libre distribué sous la [[licence publique générale GNU]].</ref> ;
* ''QtWebsocket'', une implémentation client et serveur du protocole Websocket en [[C++ (langage)|C++]] (nécessite le framework [[Qt]]) ;
* ''QtWebsocket'', une implémentation client et serveur du protocole Websocket en [[C++ (langage)|C++]] (nécessite le framework [[Qt]]) ;
* ''phpwebsocket'', implémentation PHP côté serveur et PHP/HTML5 côté client<ref>{{en}} [http://code.google.com/p/phpwebsocket/ Projet phpwebsocket], logiciel libre distribué sous la [[GNU GPL v3]].</ref> ;
* ''Wrench'' (anciennement ''php-websocket''), implémentation PHP côté serveur et PHP/HTML5 côté client<ref>{{en}} [https://github.com/varspool/Wrench Projet Wrench], logiciel libre distribué sous la [[WTFPL]].</ref> ;
* ''ScaleDrone'', implémentation javascript du protocole pour REST, [[Node.js]], [[PHP]], [[Ruby]] ;
* ''ScaleDrone'', implémentation javascript du protocole pour REST, [[Node.js]], [[PHP]], [[Ruby]] ;
* ''PubNub'', implémentation proposant une API, compatible avec tous les langages utilisés par les technologies mobiles, du web, et IoT, service gratuit ou payant ;
* ''PubNub'', implémentation proposant une API, compatible avec tous les langages utilisés par les technologies mobiles, du web, et IoT, service gratuit ou payant ;

Version du 8 mai 2017 à 14:23

WebSocket est un standard du Web désignant un protocole réseau[1] de la couche application et une interface de programmation du World Wide Web visant à créer des canaux de communication full-duplex par-dessus une connexion TCP. Le protocole a été normalisé par l'IETF dans la RFC 6455[2] en 2011 et l'interface de programmation est en cours de standardisation par le W3C.

Le protocole WebSocket

Le protocole WebSocket vise à développer un canal de communication full-duplex sur un socket TCP pour les navigateurs et les serveurs web.

Le besoin d'une communication web bidirectionnelle, client / serveur

L'interactivité croissante des applications web, consécutive à l'amélioration des performances des navigateurs, a rapidement rendu nécessaire le développement de techniques de communications bidirectionnelles entre l'application web et les processus serveur. Des techniques basées sur l'appel par le client de l'objet XMLHttpRequest et utilisant des requêtes HTTP avec un long TTL stockées par le serveur pour une réponse ultérieure au client ont permis de pallier ce manque et ont été popularisées par le succès des architectures Ajax.

Le potentiel de la technologie

Le Websocket proposera à terme une implémentation native et unifiée dans les navigateurs et serveurs web d'un canal bidirectionnel permettant :

  • la notification au client d'un changement d'état du serveur
  • l'envoi de données en mode « pousser » (méthode Push) du serveur vers le client (sans que ce dernier ait à effectuer une requête)

L'API WebSocket

L'interface de programmation WebSocket est une spécification en cours au sein du WHATWG[3] et sera publiée par le W3C une fois terminée.

Implémentations

  • GNU WebSocket4J, une implémentation du protocole WebSocket en Java ;
  • Apache WebSocket module[4], une implémentation en langage C sous la forme d'une extension pour le serveur httpd Apache (mod_websocket) ;
  • pywebsocket[5], une implémentation en Python sous la forme d'une extension pour le serveur httpd Apache (mod_pywebsocket) ;
  • jWebSocket, implémentation Java côté serveur et JavaScript/HTML5 côté client[6] ;
  • APE Project, support du protocole WebSocket (-hixie-75, -hixie-76, -hybi-ietf-06, -hybi-ietf-07)[7] ;
  • QtWebsocket, une implémentation client et serveur du protocole Websocket en C++ (nécessite le framework Qt) ;
  • Wrench (anciennement php-websocket), implémentation PHP côté serveur et PHP/HTML5 côté client[8] ;
  • ScaleDrone, implémentation javascript du protocole pour REST, Node.js, PHP, Ruby ;
  • PubNub, implémentation proposant une API, compatible avec tous les langages utilisés par les technologies mobiles, du web, et IoT, service gratuit ou payant ;
  • Pusher, implémentation sous forme d'API compatible avec la plupart des langages ;
  • SignalR, implémentation pour ASP.NET en C# ;
  • Simple Components[9], implémentation en Ada utilisée par le framework Gnoga[10]
  • Protocol::WebSocket, implémentation Perl du protocole ;
  • Socket.io, implémentation javascript du protocole pour Node.js ;
  • Websocketd, un exécutable qui permet d'utiliser un programme écrit dans n'importe quel langage courant pour lancer un serveur websocket.

Implémentation dans les navigateurs [11]

Caractéristiques Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support de la version -76 6 4.0 (2.0) Pas de support 11.00 (désactivé) 5.0.1
Support de la version du protocole 7 Pas de support 6.0 Pas de support Pas de support Pas de support
Support de la version du Protocole 10 14 7.0 HTML5 Labs ? ?
Standard - RFC 6455 Support 16 11.0 10 12.10 6

Polémique de sécurité

Une faille de sécurité a été découverte au sein de l'API des premières versions de websocket. La sécurité était compromise lors de la navigation en remplaçant pendant la phase de « handshake » un fichier JavaScript par un malware. Cette faille se situant au niveau de l'API elle-même [12], elle ne pouvait pas être corrigée par un quelconque correctif au sein du navigateur. Dans certaines versions des navigateurs comme Firefox 4 et 5, Opera 11 et Internet Explorer 9, WebSocket a été désactivé à cause de cette faille.
La faille de sécurité dans Firefox a été corrigée à partir de Firefox 6 (moteur Gecko 6.0) [11].
Internet Explorer a implémenté le websocket avec IE10 [13].
Sur Opéra, il était toujours possible de réactiver le websocket. À partir d'Opéra 12, le websocket est activé [14].

Notes et références

  1. (en) « The WebSocket Protocol », sur tools.ietf.org (consulté le )
  2. (en) « The WebSocket Protocol », Request for comments no 6455,
  3. (en) Nouvelle plate-forme web dont l'API WebSocket en cours de développement parallèlement au nouveau standard HTML5.
  4. (en) Projet apache-websocket, logiciel libre sous Apache 2.0.
  5. (en) Projet pywebsocket, logiciel libre sous licence BSD modifiée.
  6. (en) Projet jWebSocket, logiciel libre distribué sous la licence publique générale limitée GNU.
  7. (en) APE Project, logiciel libre distribué sous la licence publique générale GNU.
  8. (en) Projet Wrench, logiciel libre distribué sous la WTFPL.
  9. (en) Simple Components for Ada
  10. (en) Gnoga
  11. a et b « WebSockets », sur Mozilla Developer Network (consulté le )
  12. « [hybi] Experiment comparing Upgrade and CONNECT handshakes », sur www.ietf.org (consulté le )
  13. « API WebSocket (Windows) », sur msdn.microsoft.com (consulté le )
  14. (en) David Honneffer, Documentation Specialist, « Opera Software: API support in Opera Presto 2.12 », sur www.opera.com (consulté le )

Voir aussi

Articles connexes

Liens externes