import { EventEmitter2 } from '@nestjs/event-emitter'; import { MessageBody, OnGatewayConnection, SubscribeMessage, WebSocketGateway, WebSocketServer, } from '@nestjs/websockets'; import { Server, Socket } from 'socket.io'; import { MessagesEventService } from './messages-event.service'; @WebSocketGateway({ cors: { origin: '*', }, }) export class MessagesGateway implements OnGatewayConnection { @WebSocketServer() server: Server; constructor(private event: EventEmitter2) {} async onModuleInit() { const eventsToForward = [ MessagesEventService.EVENTS.GET_CONVERSATIONS, MessagesEventService.EVENTS.GET_CONVERSATION, MessagesEventService.EVENTS.SEND_MESSAGE, MessagesEventService.EVENTS.REPLY_MESSAGE, ]; for (const event of eventsToForward) { this.event.on(event, (data) => { this.server.emit(event, data); }); } } async handleConnection(client: Socket) { console.log(`📢 Client connected: ${client.id}`); } @SubscribeMessage(MessagesEventService.EVENTS.RECEIVE_CONVERSATIONS) async handleReiveConversations(@MessageBody() data: any) { this.event.emit(MessagesEventService.EVENTS.RECEIVE_CONVERSATIONS, data); } @SubscribeMessage(MessagesEventService.EVENTS.RECEIVE_CONVERSATION) async handleReiveConversation(@MessageBody() data: any) { this.event.emit(MessagesEventService.EVENTS.RECEIVE_CONVERSATION, data); } }