Radio
web

WebSocket

Protocole de communication bidirectionnel persistant entre un client et un serveur web.

WebSocket : la communication temps réel sur le web

Le WebSocket est un protocole de communication qui fournit un canal de communication bidirectionnel et persistant entre un client (navigateur) et un serveur, au-dessus d'une connexion TCP unique. Contrairement à HTTP ou le client doit initier chaque échange, WebSocket permet au serveur d'envoyer des données au client a tout moment.

Comment fonctionne WebSocket ?

La connexion WebSocket commence par un handshake HTTP classique. Le client envoie une requête HTTP avec un header "Upgrade: websocket". Si le serveur accepte, la connexion HTTP est "promue" en connexion WebSocket. À partir de la, les deux parties peuvent s'envoyer des messages librement.

Le protocole utilise le schéma d'URL ws:// (ou wss:// pour la version sécurisée avec TLS, equivalente à HTTPS).

WebSocket vs HTTP classique

En HTTP classique, la communication est unidirectionnelle : le client envoie une requête, le serveur répond. Pour simuler du temps réel, on utilisait des techniques comme le long polling (le client maintient une requête ouverte) ou les Server-Sent Events (SSE, flux unidirectionnel du serveur vers le client).

WebSocket offre une vraie bidirectionnalite avec une latence minimale : pas de headers HTTP repetitifs, pas de nouvelle connexion à chaque message, et le serveur peut pousser des données instantanément.

Cas d'usage typiques

  • Chat en temps réel : messageries instantanées, support client
  • Jeux en ligne : synchronisation de l'état du jeu entre joueurs
  • Trading financier : flux de prix en temps réel
  • Collaboration : édition collaborative de documents (Google Docs)
  • Notifications push : alertes instantanées dans les applications web
  • IoT : communication avec des capteurs et appareils connectes

Implémentation cote serveur

Les principales bibliothèques WebSocket incluent :

  • Socket.IO (Node.js) : la bibliothèque la plus populaire, avec fallback automatique et reconnexion
  • ws (Node.js) : implémentation légère et performante du protocole brut
  • Spring WebSocket (Java) : intégration native avec Spring Framework
  • Gorilla WebSocket (Go) : implémentation de référence en Go

Considerations de production

  1. Reconnexion automatique : les connexions WebSocket peuvent être interrompues (réseau instable, déploiement). Implémentez une logique de reconnexion avec backoff exponentiel.
  2. Heartbeat/ping-pong : envoyez des messages periodiques pour détecter les connexions mortes et maintenir la connexion active à travers les proxies.
  3. Mise a échelle : chaque connexion WebSocket consomme de la mémoire serveur. Pour des milliers de connexions simultanées, envisagez un broker de messages (Redis Pub/Sub) pour distribuer les messages entre plusieurs instances.
  4. Sécurité : validez l'origine des connexions (CORS), authentifiez via un token dans le handshake initial, et limitez le debit des messages pour prévenir les abus.

Alternatives à WebSocket

  • Server-Sent Events (SSE) : plus simple, unidirectionnel (serveur vers client uniquement), idéal pour les flux de notifications
  • WebTransport : protocole emergent base sur HTTP/3 et QUIC, prometteur pour les cas d'usage a très faible latence
  • gRPC streaming : pour la communication entre services backend

Besoin d'aide technique ?

Decrivez votre projet pour des conseils personnalises par nos experts.

Recevoir des conseils

Questions fréquentes

WebSocket consomme-t-il beaucoup de ressources serveur ?
Chaque connexion WebSocket maintient un socket TCP ouvert et consomme environ 2-10 Ko de memoire. Pour quelques milliers de connexions, c'est negligeable. Au-dela de 100 000 connexions simultanees, il faut optimiser (librairie native, load balancing, Redis Pub/Sub).
Faut-il utiliser Socket.IO ou WebSocket natif ?
Socket.IO ajoute des fonctionnalites precieuses (reconnexion automatique, rooms, fallback) mais introduit un overhead. Pour un projet simple ou la performance est critique, WebSocket natif suffit. Pour une application complexe avec plusieurs canaux, Socket.IO fait gagner du temps.
Les WebSockets fonctionnent-ils derriere un proxy ou un CDN ?
Oui, la plupart des reverse proxies (Nginx, HAProxy) et CDN (Cloudflare, AWS CloudFront) supportent WebSocket. Il faut parfois activer explicitement le support WebSocket dans la configuration du proxy.

Pages liées

Chaque semaine, le meilleur de la tech française

Tendances, salaires, outils et opportunités — directement dans votre boîte mail.

Gratuit. Desabonnement en un clic. Pas de spam.