Aller au contenu

WebSocket

WebSocket est un protocole qui établit un canal de communication bidirectionnel et persistant entre un navigateur et un serveur, là où HTTP classique impose un cycle requête → réponse à sens unique initié uniquement par le client. Une fois la connexion établie, serveur et client peuvent envoyer des messages à tout moment, dans les deux sens, sans avoir à ouvrir une nouvelle requête à chaque échange.

WebSocket démarre par un handshake HTTP classique, avec un en-tête spécifique qui demande une mise à niveau du protocole :

GET /chat HTTP/1.1
Host: exemple.fr
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

Si le serveur accepte, il répond 101 Switching Protocols et la connexion TCP, initialement HTTP, devient un canal WebSocket — sur les mêmes ports que HTTP/HTTPS (80/443), ce qui lui permet de traverser la plupart des pare-feux et proxys sans configuration particulière.

  • Chat et messagerie en temps réel : chaque message doit arriver instantanément dans les deux sens.
  • Notifications live : mises à jour de tableaux de bord, cours boursiers, scores sportifs.
  • Collaboration en temps réel : édition simultanée d’un document par plusieurs utilisateurs.
  • Jeux multijoueurs dans le navigateur.
  • Server-Sent Events (SSE) : plus simple que WebSocket, mais unidirectionnel (serveur → client uniquement) — suffisant pour de simples notifications sans besoin de renvoyer des données au serveur sur le même canal.
  • Polling / long-polling : le client répète des requêtes HTTP classiques à intervalles réguliers — moins efficace, mais plus simple à mettre en œuvre et sans besoin d’infrastructure particulière côté serveur.

Si l’échange est majoritairement à sens unique ou peu fréquent, WebSocket est souvent une complexité inutile ; il apporte une vraie valeur quand la latence bidirectionnelle compte réellement.