Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. WebSocket — Wikipédia
WebSocket — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.
WebSocket

Informations
Fonction Communication bi-directionnelle par-dessus une connexion TCP pour les navigateurs web
Sigle ws
Date de création 2011
Auteur(s) / Autrice(s) IETF
Port 80 et 443
RFC 6455

modifier

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 pour les navigateurs web. Le protocole a été normalisé par l'IETF dans la RFC 6455[2] en 2011 et l'interface de programmation[3] par le W3C.

Le protocole WebSocket

[modifier | modifier le code]
schéma
Schéma décrivant une session WebSocket

Principes généraux

[modifier | modifier le code]

Le protocole WebSocket permet d'ouvrir un canal de communication bidirectionnel (ou "full-duplex") sur un socket TCP pour les navigateurs et les serveurs web. Plus spécifiquement, il permet donc :

  • 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.

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

[modifier | modifier le code]

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 client et les processus serveur. Des techniques basées sur l'appel de requête par le client via l'objet XMLHttpRequest et utilisant des requêtes HTTP avec un type 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.

Selon l'informaticien Stéphane Bortzmeyer, « WebSocket offre donc pratiquement le même service aux applications que TCP », mais présente l'intérêt de contourner les nombreux obstacles intermédiaires aux flux réseau (pare-feux etc.) dans la « jungle » qu'est devenue le Web contemporain[4]. En utilisant l'architecture d'HTTP (relais, authentification, ports 80 et 443), très peu filtrante, pour créer un nouveau protocole de transport, les créateurs de Websocket visent à assurer une communication réseau bidirectionnelle qui n'était plus garantie à travers TCP. La principale limite de Websocket est qu'il ne s'agit pas d'un protocole généraliste : la communication doit forcément se faire via le navigateur web du client, ou à travers certaines bibliothèques dédiées (voir section « Implémentations »).

L'API WebSocket

[modifier | modifier le code]

L'interface de programmation WebSocket a été élaborée au sein du WHATWG[5].

Polémiques

[modifier | modifier le code]

Architecture réseau

[modifier | modifier le code]

Le principe même de WebSocket a été contesté au sein des organismes de spécification lors de son élaboration, au nom du fait qu'il valait sans doute mieux résoudre les problèmes de filtrage constatés dans la couche réseau plutôt que de créer un nouveau protocole au-dessus de la couche application

Sécurité

[modifier | modifier le code]

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 [6], 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) [7].
Internet Explorer a implémenté le websocket avec IE10 [8].
Sur Opéra, il était toujours possible de réactiver le websocket. À partir d'Opéra 12, le websocket est activé [9].

Implémentations

[modifier | modifier le code]

Navigateurs[7]

[modifier | modifier le code]
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

Bibliothèques logicielles

[modifier | modifier le code]

Java

[modifier | modifier le code]
  • GNU WebSocket4J, une implémentation du protocole WebSocket en Java ;
  • jWebSocket, implémentation Java côté serveur et JavaScript/HTML5 côté client[10] ;
  • Jetty

C

[modifier | modifier le code]
  • libwebsockets, une implémentation en C optimisée afin d'être légère et rapide[11];
  • Apache WebSocket module[12], une implémentation en langage C sous la forme d'une extension pour le serveur httpd Apache (mod_websocket) ;

C++

[modifier | modifier le code]
  • QtWebsocket, une implémentation client et serveur du protocole Websocket en C++ (nécessite le framework Qt) ;

Python

[modifier | modifier le code]
  • pywebsocket[13], une implémentation en Python sous la forme d'une extension pour le serveur httpd Apache (mod_pywebsocket) ;

PHP

[modifier | modifier le code]
  • Wrench (anciennement php-websocket), implémentation PHP côté serveur et PHP/HTML5 côté client[14] ;
  • Ratchet, une bibliothèque PHP de WebSocket [15]

Javascript

[modifier | modifier le code]
  • ScaleDrone, implémentation javascript du protocole pour REST, Node.js, PHP, Ruby ;
  • Socket.io, implémentation javascript du protocole pour Node.js ;

Autres

[modifier | modifier le code]
  • APE Project, support du protocole WebSocket (-hixie-75, -hixie-76, -hybi-ietf-06, -hybi-ietf-07)[16] ;
  • 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[17], implémentation en Ada utilisée par le framework Gnoga[18]
  • Protocol::WebSocket, implémentation Perl du protocole ;
  • Websocketd, un exécutable qui permet d'utiliser un programme écrit dans n'importe quel langage courant pour lancer un serveur websocket.

Notes et références

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

Voir aussi

[modifier | modifier le code]

Articles connexes

[modifier | modifier le code]
  • Liste des codes d'état WebSocket
  • Comet
  • Envoi poussé de données
  • XML socket
  • BOSH

Liens externes

[modifier | modifier le code]
v · m
API Web
Côté serveur
Protocole de communication
  • CGI
  • SCGI
  • FCGI
  • AJP
  • WSRP
  • WebSocket
APIs serveur
  • C NSAPI (en)
  • C ASAPI
  • C ISAPI
  • COM ASP
  • Servlet
  • container
  • CLI OWIN (en)
  • ASP.NET Handler (en)
  • Python WSGI
  • Ruby Rack
  • JavaScript JSGI (en)
  • Perl PSGI
  • Portlet container
Modules apaches
  • mod_jk
  • mod_lisp (en)
  • mod_mono (en)
  • mod_parrot (en)
  • mod_perl
  • mod_php
  • mod_proxy (en)
  • mod_python (en)
  • mod_wsgi
  • mod_ruby (en)
  • Phusion Passenger
Sujets
  • Ressource du World Wide Web vs. Service web
  • Open API (en)
  • Webhook
  • Serveur d'applications
  • Scripting
Côté client
W3C
  • HTML5 audio (en)
  • Canvas
  • CORS
  • DOM
  • DOM events (en)
  • File (en)
  • Geolocation (en)
  • IndexedDB
  • SSE
  • SVG
  • Video
  • WebRTC
  • WebSocket
  • Web messaging (en)
  • Stockage web local
  • WebAuthn
  • Web worker (en)
  • XMLHttpRequest
Khronos
  • OpenCL
  • WebGL
Autres
  • Gears
  • Web SQL Database (formerly W3C)
Sujets
  • Page web dynamique
  • Open Web Platform (en)
  • Rich Internet application
  • icône décorative Portail d’Internet
  • icône décorative Portail de l’informatique
  • icône décorative Portail de la programmation informatique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=WebSocket&oldid=226489511 ».
Catégories :
  • Protocole réseau sur la couche application
  • Standard du web
Catégories cachées :
  • Article utilisant une Infobox
  • Article contenant un appel à traduction en anglais
  • Portail:Internet/Articles liés
  • Portail:Médias/Articles liés
  • Portail:Société/Articles liés
  • Portail:Informatique/Articles liés
  • Portail:Technologies/Articles liés
  • Portail:Programmation informatique/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id