Programmation réseau en TypeScript : des sockets aux WebSocket

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

Programmation réseau en TypeScript : des sockets aux WebSocket

\n\n

Quand on parle de programmation réseau en TypeScript, on imagine souvent des systèmes distribués complexes, des chats en temps réel ou des serveurs de jeux. Et ce n'est pas un hasard : TypeScript, avec son typage strict et ses capacités d'analyse statique, rend le développement d'applications réseau non seulement sûr, mais aussi vraiment pratique.

\n\n

Dans cet article, nous allons voir comment créer des applications client-serveur en TypeScript en utilisant les modules intégrés de Node.js — net et dgram — ainsi que des bibliothèques pour travailler avec WebSocket. Vous obtiendrez des exemples de code prêts à l'emploi que vous pourrez immédiatement appliquer dans vos projets.

\n\n

Pourquoi TypeScript pour la programmation réseau ?

\n\n

De nombreux développeurs ont l'habitude d'utiliser JavaScript pour le backend, mais la programmation réseau en TypeScript offre plusieurs avantages :

\n\n
    \n
  • Typage des données — vous définissez à l'avance la structure des paquets et des messages
  • \n
  • Auto-complétion — l'IDE suggère les méthodes des sockets et leurs paramètres
  • \n
  • Moins d'erreurs — le compilateur détecte les incohérences de types avant l'exécution
  • \n
\n\n

Regardons un exemple concret. Imaginez que nous écrivons un serveur TCP. En JavaScript, vous écririez :

\n\n
const server = require('net').createServer(socket => {\n  socket.on('data', data => {\n    // data est un Buffer, il faut s'en souvenir\n  });\n});
\n\n

Avec TypeScript, nous obtenons des types clairs :

\n\n
import * as net from 'net';\n\nconst server: net.Server = net.createServer((socket: net.Socket) => {\n  socket.on('data', (data: Buffer) => {\n    // Le type Buffer est connu, on travaille en toute confiance\n  });\n});
\n\n

Cela semble un détail, mais sur de grands projets, cette différence permet d'économiser des heures de débogage.

\n\n

Les bases : serveur et client TCP en TypeScript

\n\n

Commençons par le classique — TCP. Créons un simple serveur echo qui renvoie au client ce qu'il a reçu.

\n\n

Serveur TCP

\n\n
import * as net from 'net';\n\nconst PORT: number = 3000;\nconst HOST: string = '127.0.0.1';\n\nconst server: net.Server = net.createServer((socket: net.Socket) => {\n  console.log(`Client connecté : ${socket.remoteAddress}:${socket.remotePort}`);\n\n  socket.on('data', (data: Buffer) => {\n    const message: string = data.toString().trim();\n    console.log(`Reçu : ${message}`);\n    socket.write(`Echo : ${message}\\n`);\n  });\n\n  socket.on('end', () => {\n    console.log('Client déconnecté');\n  });\n\n  socket.on('error', (err: Error) => {\n    console.error('Erreur de socket :', err.message);\n  });\n});\n\nserver.listen(PORT, HOST, () => {\n  console.log(`Serveur TCP démarré sur ${HOST}:${PORT}`);\n});
\n\n

Remarquez : nous avons typé toutes les variables — server, socket, data, err. Cela nous permet de voir quelles méthodes sont disponibles sur le socket et d'éviter des erreurs accidentelles.

\n\n

Client TCP

\n\n
import * as net from 'net';\n\nconst client: net.Socket = new net.Socket();\n\nclient.connect(3000, '127.0.0.1', () => {\n  console.log('Connecté au serveur');\n  client.write('Bonjour, serveur !');\n});\n\nclient.on('data', (data: Buffer) => {\n  console.log('Réponse du serveur :', data.toString());\n  client.destroy();\n});\n\nclient.on('close', () => {\n  console.log('Connexion fermée');\n});
\n\n

Ce code peut être exécuté dans n'importe quel projet Node.js avec TypeScript. Il suffit d'installer @types/node et de compiler.

\n\n

UDP : quand la vitesse prime sur la fiabilité

\n\n

Si vous devez transmettre des données sans établir de connexion (par exemple, pour le streaming ou les jeux), utilisez les sockets UDP en TypeScript. Le module dgram fournit tout le nécessaire.

\n\n

Serveur UDP

\n\n
import * as dgram from 'dgram';\n\nconst server: dgram.Socke                

Blogs

Book Recommendations