import type { Message } from '@chat-room/api-interfaces'; import { MESSAGE_TO_CLIENT, MESSAGE_TO_SERVER, } from '@chat-room/api-interfaces'; import { Logger } from '@nestjs/common'; import { OnGatewayConnection, OnGatewayDisconnect, OnGatewayInit, SubscribeMessage, WebSocketGateway, WebSocketServer, } from '@nestjs/websockets'; import { AppService } from './app.service'; import { Server, Socket } from 'socket.io'; @WebSocketGateway(4001) export class AppGateway implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect { @WebSocketServer() wss: Server; private logger: Logger = new Logger('AppGateway'); constructor(private appService: AppService) {} // eslint-disable-next-line @typescript-eslint/no-unused-vars afterInit(server: Server) { this.logger.log('Initialized...'); } // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unused-vars handleConnection(client: Socket, ...args: any[]) { this.logger.log(`Client connected: ${client.id}`); client.emit(MESSAGE_TO_CLIENT, this.appService.getMessages()); } handleDisconnect(client: Socket) { this.logger.log(`Client disconnected: ${client.id}`); } @SubscribeMessage(MESSAGE_TO_SERVER) handleMessage(client: Socket, payload: Message): void { this.logger.log(payload); this.appService.addMessage(payload); this.wss.emit(MESSAGE_TO_CLIENT, this.appService.getMessages()); } }