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.
Établissement de la connexion
Section intitulée « Établissement de la connexion »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.1Host: exemple.frUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Version: 13Si 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.
Cas d’usage
Section intitulée « Cas d’usage »- 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.
Alternatives et quand ne pas l’utiliser
Section intitulée « Alternatives et quand ne pas l’utiliser »- 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.