diff --git a/backend/src/realtime/events.gateway.ts b/backend/src/realtime/events.gateway.ts index 2e6ab86..77c3c7d 100644 --- a/backend/src/realtime/events.gateway.ts +++ b/backend/src/realtime/events.gateway.ts @@ -1,9 +1,12 @@ import { Logger } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; import { + ConnectedSocket, + MessageBody, OnGatewayConnection, OnGatewayDisconnect, OnGatewayInit, + SubscribeMessage, WebSocketGateway, WebSocketServer, } from "@nestjs/websockets"; @@ -54,6 +57,8 @@ export class EventsGateway if (!session.accessToken) { this.logger.warn(`Client ${client.id} unauthorized connection`); + // Permettre les connexions anonymes pour voir les commentaires en temps réel ? + // Pour l'instant on déconnecte car le système actuel semble exiger l'auth client.disconnect(); return; } @@ -75,8 +80,30 @@ export class EventsGateway this.logger.log(`Client disconnected: ${client.id}`); } + @SubscribeMessage("join_content") + handleJoinContent( + @ConnectedSocket() client: Socket, + @MessageBody() contentId: string, + ) { + client.join(`content:${contentId}`); + this.logger.log(`Client ${client.id} joined content room: ${contentId}`); + } + + @SubscribeMessage("leave_content") + handleLeaveContent( + @ConnectedSocket() client: Socket, + @MessageBody() contentId: string, + ) { + client.leave(`content:${contentId}`); + this.logger.log(`Client ${client.id} left content room: ${contentId}`); + } + // Méthode utilitaire pour envoyer des messages à un utilisateur spécifique sendToUser(userId: string, event: string, data: any) { this.server.to(`user:${userId}`).emit(event, data); } + + sendToContent(contentId: string, event: string, data: any) { + this.server.to(`content:${contentId}`).emit(event, data); + } }