Crée des conversations privées, envoie des messages en temps réel et affiche-les instantanément côté client.
Dans ce module, nous allons bâtir la fonctionnalité de chat en temps réel de votre application Remix à l’aide de NestJS et de Socket.io. Vous apprendrez à créer et gérer :
Ce parcours s’appuie sur des notions de base comme la sécurisation des routes avec JWT, la gestion d’états React et l’intégration de formulaires Remix pour envoyer des données sans recharger la page.
Vous devez maîtriser les fondations de Remix (routes, loaders, actions) et connaître les bases de NestJS (contrôleurs, services, guards).
useFetcher
, <Form>
)Pensez à scroller automatiquement la liste de messages en bas dès que vous recevez un nouvel événement Socket.io.
CreateConversationDto
/chat
protégée par JwtAuthGuard
SendChatDto
et route POST /chat/:conversationId
ChatService
pour persister et émettre l’événementuseFetcher
1@WebSocketGateway(8001, { cors: '*' })2export class AppGateway implements OnGatewayInit {3@WebSocketServer() private server: Server;4@SubscribeMessage('join-chat-room')5async join(@MessageBody() id: string, @ConnectedSocket() sock: Socket) {6sock.join(id);7}8@SubscribeMessage('chat')9async handle(@MessageBody() msg, @ConnectedSocket() sock: Socket) {10this.server.to(msg.convId).emit('chat', msg);11}12}
Cet extrait met en place l’abonnement à une salle de chat et la diffusion des messages à tous les clients participants.
<Conversations>
: liste des tchats et création de nouveaux<Chatbox>
: affichage des messages, formulaire et hooksuseEffect
, refs)Dans les prochaines leçons, nous plongerons dans chaque étape, du back-end NestJS à la partie UI Remix, pour obtenir un chat temps réel robuste et réactif.