2020-10-09 16:38:55 +00:00
|
|
|
import type { Message } from '@chat-room/api-interfaces';
|
2020-10-09 16:21:21 +00:00
|
|
|
import {
|
|
|
|
MESSAGE_TO_CLIENT,
|
|
|
|
MESSAGE_TO_SERVER,
|
|
|
|
} from '@chat-room/api-interfaces';
|
|
|
|
import { Logger } from '@nestjs/common';
|
|
|
|
import {
|
|
|
|
OnGatewayConnection,
|
2020-10-12 16:22:24 +00:00
|
|
|
OnGatewayDisconnect,
|
|
|
|
OnGatewayInit,
|
2020-10-09 16:21:21 +00:00
|
|
|
SubscribeMessage,
|
|
|
|
WebSocketGateway,
|
|
|
|
WebSocketServer,
|
|
|
|
} from '@nestjs/websockets';
|
|
|
|
import { AppService } from './app.service';
|
2020-10-12 16:22:24 +00:00
|
|
|
import { Server, Socket } from 'socket.io';
|
2020-10-09 16:21:21 +00:00
|
|
|
|
|
|
|
@WebSocketGateway(4001)
|
2020-10-12 16:22:24 +00:00
|
|
|
export class AppGateway
|
|
|
|
implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect {
|
2020-10-09 16:21:21 +00:00
|
|
|
@WebSocketServer()
|
|
|
|
wss: Server;
|
|
|
|
|
|
|
|
private logger: Logger = new Logger('AppGateway');
|
|
|
|
|
|
|
|
constructor(private appService: AppService) {}
|
|
|
|
|
2020-10-12 16:22:24 +00:00
|
|
|
afterInit(server: Server) {
|
|
|
|
this.logger.log('Initialized...');
|
|
|
|
}
|
|
|
|
|
2020-10-12 16:09:02 +00:00
|
|
|
handleConnection(client: Socket, ...args: any[]) {
|
2020-10-12 16:22:24 +00:00
|
|
|
this.logger.log(`Client connected: ${client.id}`);
|
2020-10-09 16:21:21 +00:00
|
|
|
client.emit(MESSAGE_TO_CLIENT, this.appService.getMessages());
|
|
|
|
}
|
|
|
|
|
2020-10-12 16:22:24 +00:00
|
|
|
handleDisconnect(client: Socket) {
|
|
|
|
this.logger.log(`Client disconnected: ${client.id}`);
|
|
|
|
}
|
|
|
|
|
2020-10-09 16:21:21 +00:00
|
|
|
@SubscribeMessage(MESSAGE_TO_SERVER)
|
2020-10-12 16:09:02 +00:00
|
|
|
handleMessage(client: Socket, payload: Message): void {
|
2020-10-09 16:21:21 +00:00
|
|
|
this.logger.log(payload);
|
|
|
|
this.appService.addMessage(payload);
|
|
|
|
this.wss.emit(MESSAGE_TO_CLIENT, this.appService.getMessages());
|
|
|
|
}
|
|
|
|
}
|