Я на стороне сервера, я использую гнездо js. Я создал файл app.gateway и создал функции подключения и отключения от сокета в нем.
@WebSocketGateway()
export class AppGateway implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect {
private logger: Logger = new Logger(AppGateway.name);
afterInit(): void {
this.logger.log('Chat listening events');
}
handleConnection(@ConnectedSocket() client: Socket): void {
this.logger.log(`Client connected: ${client.id}`);
}
handleDisconnect(@ConnectedSocket() client: Socket): void {
this.logger.log(`Client disconnected: ${client.id}`);
}
}
Затем я создал контроллер, в котором реализовал метод выхода.
@ApiUseTags('auth')
@Controller('auth')
export class AuthController {
constructor(
private readonly tokenService: TokenService,
) {}
private readonly logger = new Logger(AuthController.name);
@UseGuards(AuthGuard('jwt'))
@Post('/logout')
public async logout(@Response() res, @Request() req): Promise<object> {
this.logger.log('Logout');
const user: IUser = req.user;
await this.tokenService.daleteTokenByUserId(user.id);
return res.status(HttpStatus.OK).json({ success: true });
}
}
Как я могу отключить сокетное соединение в моем контроллере, когда клиент вызывает метод выхода из системы?