Radio
web

WebSocket

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

WebSocket : la communication temps reel 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 a HTTP ou le client doit initier chaque echange, WebSocket permet au serveur d'envoyer des donnees au client a tout moment.

Comment fonctionne WebSocket ?

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

Le protocole utilise le schema d'URL ws:// (ou wss:// pour la version securisee avec TLS, equivalente a HTTPS).

WebSocket vs HTTP classique

En HTTP classique, la communication est unidirectionnelle : le client envoie une requete, le serveur repond. Pour simuler du temps reel, on utilisait des techniques comme le long polling (le client maintient une requete 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 a chaque message, et le serveur peut pousser des donnees instantanement.

Cas d'usage typiques

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

Implementation cote serveur

Les principales bibliotheques WebSocket incluent :

  • Socket.IO (Node.js) : la bibliotheque la plus populaire, avec fallback automatique et reconnexion
  • ws (Node.js) : implementation legere et performante du protocole brut
  • Spring WebSocket (Java) : integration native avec Spring Framework
  • Gorilla WebSocket (Go) : implementation de reference en Go

Considerations de production

  1. Reconnexion automatique : les connexions WebSocket peuvent etre interrompues (reseau instable, deploiement). Implementez une logique de reconnexion avec backoff exponentiel.
  2. Heartbeat/ping-pong : envoyez des messages periodiques pour detecter les connexions mortes et maintenir la connexion active a travers les proxies.
  3. Mise a echelle : chaque connexion WebSocket consomme de la memoire serveur. Pour des milliers de connexions simultanees, envisagez un broker de messages (Redis Pub/Sub) pour distribuer les messages entre plusieurs instances.
  4. Securite : validez l'origine des connexions (CORS), authentifiez via un token dans le handshake initial, et limitez le debit des messages pour prevenir les abus.

Alternatives a WebSocket

  • Server-Sent Events (SSE) : plus simple, unidirectionnel (serveur vers client uniquement), ideal pour les flux de notifications
  • WebTransport : protocole emergent base sur HTTP/3 et QUIC, prometteur pour les cas d'usage a tres 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 frequentes

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 liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.