Patterns temps réel avec NestJS : WebSockets qui passent à l'échelle
Le temps réel, c'est facile en démo et difficile en production. Entre les reconnexions, les messages perdus et les instances multiples, voici les patterns qui ont survécu à la mise en prod de Soft-Vodooz.
01Une gateway par domaine
Plutôt qu'une gateway unique qui sait tout faire, on isole une gateway par domaine métier : messagerie, notifications, présence. Chacune a ses rooms, ses événements et sa logique de reconnexion. Le code reste testable et les incidents sont circonscrits.
02Les rooms comme unité de diffusion
Une room par salon de discussion, pas par utilisateur : le serveur diffuse une fois, les abonnés reçoivent. Les accusés de lecture et la présence passent par des canaux séparés pour ne pas saturer le canal principal de messages de contrôle.
03Files de tâches pour le lourd
Règle d'or : rien de lent dans le chemin WebSocket. Redimensionnement d'image, envoi d'emails, indexation — tout part dans BullMQ et le client reçoit un événement de complétion. La gateway reste réactive quoi qu'il arrive.
En résumé : des gateways isolées, des rooms bien découpées, du lourd en files de tâches — et du monitoring sur la latence de diffusion, pas seulement sur les connexions.
Une question sur cet article ?
Me contacter ↗
