Le protocole WebSocket est un protocole réseau basé sur le protocole TCP. Celui-ci définit la façon dont les données sont échangées entre les réseaux. En raison de sa fiabilité et de son ef­fi­ca­cité, il est utilisé par presque tous les clients. TCP établit une connexion entre deux points finaux de com­mu­ni­ca­tion qu’on appelle des sockets. Ainsi, une com­mu­ni­ca­tion bi­di­rec­tion­nelle s’établit entre les données.

Dans le cas d’une connexion bi­di­rec­tion­nelle comme avec le protocole WebSocket (parfois écrit web socket), les données circulent si­mul­ta­né­ment dans les deux sens. L’avantage : le char­ge­ment des données est beaucoup plus rapide. Le WebSocket est spé­cia­le­ment conçu pour permettre d’établir une com­mu­ni­ca­tion directe entre une ap­pli­ca­tion Web et un serveur WebSocket. Con­crè­te­ment, cela signifie que : vous cliquez sur un site Web et celui-ci s’affiche en « temps réel ».

Comment fonc­tionne le WebSocket ?

Comment fonc­tionne la con­sul­ta­tion d’un site Web sans WebSocket ? Sur Internet, la trans­mis­sion de site Web se fait en général par le biais d’une connexion HTTP. Le protocole est utilisé pour trans­mettre les données et permet d’afficher le site Web dans le na­vi­ga­teur. Dans ce contexte, votre client envoie à chaque action (par exemple chaque clic) une requête au serveur.

En HTTP, pour consulter un site Web, le client doit d’abord envoyer une requête au serveur. Celui-ci peut ensuite répondre et trans­mettre le contenu désiré. Il s’agit d’un simple modèle de requête et de réponse, qui finit par oc­ca­sion­ner un délai important entre la requête et la réponse.

L’uti­li­sa­tion d’un WebSocket permet la con­sul­ta­tion dynamique en temps réel d’un site Web. Avec le protocole WebSocket, il suffit au client d’établir la connexion avec un serveur Web. La connexion entre le client et le serveur s’établit grâce à la phase de handshake du protocole WebSocket. Dans ce cas, le client envoie toutes les iden­ti­fi­ca­tions né­ces­saires à l’échange de données au serveur.

Une fois établi, le canal de com­mu­ni­ca­tion reste semi-ouvert. Le serveur peut s’activer de lui-même et trans­mettre au client toutes les in­for­ma­tions sans que le client ne les demande. Les no­ti­fi­ca­tions push des sites Web fonc­tion­nent sur ce principe. Si de nouvelles in­for­ma­tions sont dis­po­nibles sur le serveur, le serveur les com­mu­nique au client sans que celui-ci n’ait à émettre de requête.

Avec le WebSocket, le client commence par envoyer une requête classique, comme dans le cadre du protocole HTTP, mais dans ce cas, le processus de connexion s’effectue via une connexion TCP per­ma­nente. La phase de handshake entre le client et le serveur se déroule de la manière suivante :

Le client envoie la requête :

GET /chatService HTTP/1.1
Host: server.example.com
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

La réponse du serveur est la suivante :

HTTP/1.1 101 Switching Protocols
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: superchat

Le nouveau schéma URL WebSocket pour les pages Web con­sul­tées com­men­cera par ws au lieu de http. Pour une connexion plus sûre, sé­lec­tion­nez wss, comme vous le feriez pour une connexion sécurisée avec https.

Dans quels cas un WebSocket est-il né­ces­saire ?

Le WebSocket est gé­né­ra­le­ment utilisé lorsqu’une connexion rapide est né­ces­saire. Pensez par exemple à une dis­cus­sion ins­tan­ta­née avec un service d’as­sis­tance, un flux de nouvelles, l’affichage des données en bourse, Messenger et aux jeux en temps réel. Avec les requêtes de connexion ha­bi­tuelles, de nom­breuses en­tre­prises ont atteint leurs limites.

Les réseaux sociaux peuvent également bé­né­fi­cier d’un WebSocket. Nous voulons nous connecter en temps réel avec d’autres personnes et envoyer et recevoir im­mé­dia­te­ment des messages. L’uti­li­sa­tion d’un WebSocket prend tout son sens lorsqu’une vitesse de trans­mis­sion élevée est né­ces­saire et que la latence doit être réduite à son minimum.

Quels sont les avantages du protocole WebSocket ?

Dans le cas d’une uti­li­sa­tion classique d’une connexion HTTP, le problème vient du fait que le client doit sys­té­ma­ti­que­ment charger la page HTML complète. La tech­no­lo­gie AJAX a été créée pour répondre à ce problème. Celle-ci présente cependant un dé­sa­van­tage majeur, en tant que connexion uni­di­rec­tion­nelle : elle ne permet qu’une com­mu­ni­ca­tion à sens unique, ce qui entraîne des délais con­si­dé­rables au regard du débit actuel et notamment dans les ap­pli­ca­tions de dis­cus­sion ins­tan­ta­née. En tant que connexion bi­di­rec­tion­nelle per­met­tant un échange dans les deux sens, le WebSocket permet un contact direct avec le na­vi­ga­teur, ce qui permet un temps de char­ge­ment plus court. Dès qu’un message est dis­po­nible, par exemple dans une dis­cus­sion ins­tan­ta­née avec un service d’as­sis­tance, il est affiché sans délai.

Exemples d’uti­li­sa­tion de WebSocket

Le WebSocket convient à toutes les uti­li­sa­tions né­ces­si­tant une connexion Internet rapide. À l’heure actuelle, une connexion en temps réel entre client et serveur est né­ces­saire dans de nombreux domaines. On peut notamment citer :

  • Les jeux en ligne
  • Les pla­te­formes d’achat et de vente, comme eBay
  • Les dis­cus­sions ins­tan­ta­nées des services d’as­sis­tance
  • Les flux de nouvelles en direct d’évè­ne­ments sportifs
  • L’ac­tua­li­sa­tion en temps réel des réseaux sociaux

Le WebSocket n’est pas une al­ter­na­tive directe à HTTP, mais peut être utilisé comme canal de com­mu­ni­ca­tion bi­di­rec­tion­nel partout où un affichage en temps réel est né­ces­saire.

Où peut-on déjà utiliser le protocole WebSocket ?

Pour pouvoir utiliser WebSocket, vous devez avoir un na­vi­ga­teur Web à jour :

  • Internet Explorer à partir de la version 10
  • Firefox à partir de la version 6
  • Chrome à partir de la version 14
  • Opera à partir de la version 12.10
  • Safari à partir de la version 6

Sur la page serveur, le WebSocket peut être mis en place grâce aux langages de pro­gram­ma­tion suivants :

  • Node.js
    • Socket.IO
    • WebSocket-Node
    • ws
  • Java
    • Jetty
  • Ruby
    • Event­Ma­chine
  • Python
    • py­Web­So­cket
    • Tornado
  • Erlang
    • Shirasu
  • C++
    • lib­Web­So­ckets
  • .NET
    • Su­per­Web­So­cket
En résumé

Le protocole WebSocket est une tech­no­lo­gie qui s’inscrit dans le cadre du dé­ve­lop­pe­ment du HTML5 : une tentative de rendre le Web plus rapide, plus dynamique et plus sûr. Ce protocole per­for­mant permet l’uti­li­sa­tion d’ap­pli­ca­tions Web modernes qui fonc­tion­nent beaucoup plus ra­pi­de­ment que celles aux­quelles nous sommes habitués dans le cadre de com­mu­ni­ca­tions HTTP tra­di­tion­nelles. Cela ne signifie cependant pas qu’il faut se dé­bar­ras­ser de l’ancien protocole. Malgré le WebSocket, HTTP demeure un standard majeur de la com­mu­ni­ca­tion Internet.

Aller au menu principal