Как закрыть сокетное соединение при выходе из аккаунта - PullRequest
0 голосов
/ 17 января 2020

Я на стороне сервера, я использую гнездо 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 });
    }
}

Как я могу отключить сокетное соединение в моем контроллере, когда клиент вызывает метод выхода из системы?

1 Ответ

0 голосов
/ 17 января 2020

Согласно документации вы можете использовать socket.close() или socket.disconnect().

...