Module 08 ⭐⭐⭐ Difficile ~4h

⚡ Chat en Temps Réel + Queue Emails

Construire un système de chat temps réel avec WebSocket + rooms, notifications par événements EventEmitter2, et file d'emails avec BullMQ + Redis.

🏗️ Architecture

WebSocket (Socket.io)          EventEmitter2               BullMQ (Redis)
─────────────────────         ─────────────────           ──────────────────
ChatGateway                   user.joined → NotifListener  mail queue
  ├── /chat namespace          message.sent → HistoryListener  ├── welcome job
  ├── room:join                room.created → MailListener     ├── notification job
  ├── message:send             user.offline                    └── digest job (cron)
  └── typing:start

🔧 Événements WebSocket

// Client → Serveur
socket.emit('room:join',    { roomId: 'general' });
socket.emit('room:leave',   { roomId: 'general' });
socket.emit('message:send', { roomId, content, type: 'text' | 'image' });
socket.emit('typing:start', { roomId });
socket.emit('typing:stop',  { roomId });

// Serveur → Client
socket.on('message:new',   (msg) => { ... });
socket.on('user:joined',   ({ userId, roomId }) => { ... });
socket.on('user:left',     ({ userId, roomId }) => { ... });
socket.on('typing:update', ({ userId, isTyping }) => { ... });
socket.on('notification',  ({ type, data }) => { ... });

✅ Fonctionnalités

← Cours ✏️ Exercices 🧠 QCM NS08 Module 09 →