Builders Academy
WebSockets — Communication Temps Réel
1 of 1

Chapitre 1 · Leçon 1

WebSockets

Connexion persistante bidirectionnelle client-serveur

Section 1

Le protocole WebSocket

Step 1

HTTP → WebSocket Upgrade

Une connexion WebSocket démarre par une requête HTTP normale, puis demande un upgrade vers le protocole WebSocket. La connexion reste ouverte, permettant l'échange bidirectionnel.

snippet.typescript

typescript
1/*
2 * WebSocket Handshake (HTTP → WS Upgrade)
3 *
4 * CLIENT → SERVEUR :
5 * GET /ws HTTP/1.1
6 * Host: api.usher.dev
7 * Upgrade: websocket
8 * Connection: Upgrade
9 * Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
10 * Sec-WebSocket-Version: 13
11 *
12 * SERVEUR → CLIENT :
13 * HTTP/1.1 101 Switching Protocols
14 * Upgrade: websocket
15 * Connection: Upgrade
16 * Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
17 *
18 * Après le 101 :
19 * - La connexion TCP reste ouverte indéfiniment
20 * - Messages WebSocket frames (binary ou text)
21 * - Ping/Pong heartbeat pour détecter les déconnexions
22 * - Fermeture avec Close frame (code + raison)
23 */
24
25// HTTP polling vs WebSocket — comparaison
26// HTTP Polling (toutes les 2s) :
27// → 30 requêtes/minute par client
28// → Headers + overhead à chaque requête
29// → Latence max = 2 secondes
30
31// WebSocket :
32// → 1 connexion persistante
33// → Latence = quelques ms
34// → Overhead minimal (frames binaires)
35// → Bidirectionnel : serveur peut push sans que le client demande

Step 2

Socket.io — WebSocket avec fallback

Socket.io ajoute des fonctionnalités au-dessus de WebSocket : reconnexion automatique, salles, namespaces, et fallback HTTP long-polling si WebSocket n'est pas disponible.

snippet.typescript

typescript
1/*
2 * WebSocket Handshake (HTTP → WS Upgrade)
3 *
4 * CLIENT → SERVEUR :
5 * GET /ws HTTP/1.1
6 * Host: api.usher.dev
7 * Upgrade: websocket
8 * Connection: Upgrade
9 * Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
10 * Sec-WebSocket-Version: 13
11 *
12 * SERVEUR → CLIENT :
13 * HTTP/1.1 101 Switching Protocols
14 * Upgrade: websocket
15 * Connection: Upgrade
16 * Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
17 *
18 * Après le 101 :
19 * - La connexion TCP reste ouverte indéfiniment
20 * - Messages WebSocket frames (binary ou text)
21 * - Ping/Pong heartbeat pour détecter les déconnexions
22 * - Fermeture avec Close frame (code + raison)
23 */
24
25// HTTP polling vs WebSocket — comparaison
26// HTTP Polling (toutes les 2s) :
27// → 30 requêtes/minute par client
28// → Headers + overhead à chaque requête
29// → Latence max = 2 secondes
30
31// WebSocket :
32// → 1 connexion persistante
33// → Latence = quelques ms
34// → Overhead minimal (frames binaires)
35// → Bidirectionnel : serveur peut push sans que le client demande

Topics and skills covered

  • WebSocket
  • Socket.io
  • Temps réel
  • Node.js