universo-platform-3d
38 строк · 1.0 Кб
1import { Logger } from '@nestjs/common'
2import {
3OnGatewayConnection,
4OnGatewayDisconnect,
5OnGatewayInit,
6WebSocketGateway
7} from '@nestjs/websockets'
8import { Server, WebSocket } from 'ws'
9import { WsAuthHelperService } from './ws-auth-helper.service'
10
11@WebSocketGateway()
12export class GodotGateway
13implements OnGatewayConnection, OnGatewayDisconnect, OnGatewayInit
14{
15constructor(
16private readonly logger: Logger,
17private readonly wsAuthHelperService: WsAuthHelperService
18) {}
19
20private channelSubs: Record<string, WebSocket[]> = {}
21
22/** on server init */
23public afterInit(server: Server) {
24this.logger.log('Socket is live', GodotGateway.name)
25}
26
27/** on connect event */
28public handleConnection(client: WebSocket, ...args: any[]) {
29this.wsAuthHelperService.handleConnectionHelper(client, args)
30}
31
32/** on disconnect event */
33public handleDisconnect(client: WebSocket) {
34this.logger.log('Handle Disconnect', GodotGateway.name)
35this.wsAuthHelperService.removeSubscriber(client)
36client.close()
37}
38}
39