Comment fonctionnent les WebSockets ?

Ce que tu dois savoir sur le fonctionnement des WebSockets

Tu sais, quand toi et moi on parle ici, c’est un peu comme une discussion en direct. Les WebSockets, c’est justement ça, mais côté web. En général, quand un navigateur communique avec un serveur, c’est le client (le navigateur) qui fait la demande, et le serveur répond. Point. C’est un aller simple. Mais avec les WebSockets, c’est comme si on ouvrait une ligne directe entre les deux, et qu’on pouvait parler en continu, sans refaire toute la procédure à chaque fois.

Une connexion unique mais bidirectionnelle

Ce que tu fais avec WebSocket, c’est créer une connexion TCP unique qui reste ouverte. Tu n’as pas besoin de renvoyer une requête HTTP à chaque fois que tu veux recevoir des données. Le serveur peut t’envoyer des infos dès qu’il en a, en temps réel. C’est super fluide, et beaucoup plus léger que de faire des requêtes en boucle comme avec l’ancienne méthode qu’on appelait le polling.

Une poignée de main pour commencer

Tout commence avec une requête HTTP spéciale. Ton navigateur envoie une requête « Upgrade » au serveur, comme pour lui dire : « Hé, je veux passer en mode WebSocket. » Si le serveur accepte, il te répond avec une confirmation, et là la connexion change de mode. Ensuite, fini les allers-retours compliqués, tout se fait sur ce canal persistant. C’est ce qu’on appelle le handshake, un peu comme si vous échangiez une poignée de main avant de discuter librement.

Utilisation côté client et côté serveur

Dans le navigateur, tu peux utiliser l’objet JavaScript WebSocket comme ceci :

const socket = new WebSocket("wss://monserveur.com/socket");

socket.onopen = () => {
  socket.send("Salut serveur !");
};

socket.onmessage = (event) => {
  console.log("Message reçu :", event.data);
};

Et de l’autre côté, sur le serveur, tu utilises une bibliothèque ou un framework qui gère ça – que ce soit en Node.js, Python ou autre. Une fois la connexion ouverte, les deux peuvent envoyer et recevoir sans interruption. Tu peux t’en servir pour du chat en direct, du streaming de données, des tableaux de bord ou des jeux en ligne.

Comparons un peu avec les méthodes classiques

Méthode Connexion Bidirectionnelle Réactivité
HTTP classique Ouverture à chaque requête Non Moyenne
Long Polling Maintenue temporairement Partiellement Améliorée
WebSocket Connexion persistante Oui Très élevée

Donc si toi aussi tu veux que ton application réagisse vite, sans délais, sans surcharger le serveur, WebSocket est la solution qu’il te faut. C’est un peu comme une ligne téléphonique ouverte en permanence : dès que t’as quelque chose à dire ou à recevoir, tu n’attends plus, tu agis.