Bibliothèques WebSocket pour Node.js : ws, Socket.IO, uWS — aperçu complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bibliothèques WebSocket pour Node.js : ws, Socket.IO et µWebSockets



WebSocket est un protocole assurant une connexion bidirectionnelle permanente entre un client et un serveur. Dans l'écosystème Node.js, il existe plusieurs bibliothèques populaires implémentant ce protocole. Dans cet article, nous examinerons les trois principales : ws, Socket.IO et µWebSockets (uWS). Vous apprendrez comment les installer, écrire un simple serveur de chat et choisir l'outil adapté à votre tâche.



1. Bibliothèque ws — légère et haute performance



ws est la bibliothèque WebSocket la plus populaire et la plus rapide pour Node.js. Elle implémente le protocole WebSocket pur sans ajouts supplémentaires, ce qui offre une surcharge minimale et une vitesse maximale.



Installation

npm install ws


Exemple : serveur écho

const WebSocket = require('ws');

const server = new WebSocket.Server({ port: 8080 });

server.on('connection', (ws) => { console.log('Client connecté');

ws.on('message', (message) => { console.log(`Reçu : ${message}`); ws.send(`Écho : ${message}`); });

ws.on('close', () => { console.log('Client déconnecté'); });});

console.log('Serveur WebSocket démarré sur ws://localhost:8080');


Partie cliente (navigateur)

const socket = new WebSocket('ws://localhost:8080');

socket.onopen = () => { console.log('Connexion établie'); socket.send('Bonjour, serveur !');};

socket.onmessage = (event) => { console.log('Réponse du serveur :', event.data);};

socket.onerror = (error) => { console.error('Erreur WebSocket :', error);};


Caractéristiques de ws :

  • Performance : jusqu'à 2-3 fois plus rapide que Socket.IO dans les tests de débit.
  • Minimalisme : pas de mécanismes intégrés de reconnexion, de salles ou de transports de repli.
  • Support : compatibilité totale avec la RFC 6455.
  • Utilisation : idéal pour les applications en temps réel où la vitesse est critique (données boursières, jeux, chats à forte charge).


2. Socket.IO — confort et fiabilité pour la production



Socket.IO n'est pas simplement une bibliothèque WebSocket, mais un véritable framework pour les applications en temps réel. Il ajoute au-dessus de WebSocket : reconnexion automatique, salles, espaces de noms, repli sur le long-polling (si WebSocket n'est pas pris en charge) et une API pratique.



Installation

npm install socket.io


Exemple : serveur de chat simple

const http = require('http');const { Server } = require('socket.io');

const server = http.createServer();const io = new Server(server, { cors: { origin: '*' }});

io.on('connection', (socket) => { console.log(`Utilisateur connecté : ${socket.id}`);

socket.on('chat message', (msg) => { console.log(`Message : ${msg}`); io.emit('chat message', msg); // diffusion à tous });

socket.on('disconnect', () => { console.log(`Utilisateur déconnecté : ${socket.id}`); });});

server.listen(3000, () => { console.log('Serveur Socket.IO sur http://localhost:3000');});


Partie cliente (navigateur)

<script src="/socket.io/socket.io.js"></script><script>  const socket = io('http://localhost:3000');

socket.on('connect', () => { console.log('Connecté au serveur'); socket.emit('chat message', 'Bonjour à tous !'); });

socket.on('chat message', (msg) => { const item = document.createElement('li'); item.textContent = msg; document.getElementById('messages').appendChild(item); });</script>


Caractéristiques de Socket.IO :

  • Reconnexion automatique : en cas de rupture de connexion, le client tente lui-même de rétablir la liaison.

Recommendations