0

身份验证失败后,在断开连接之前,我想向客户端发出一个事件,通知请求提供的令牌无效。在我的 WebSocketGateway 这是我的代码:

 handleConnection(client: Socket, ...args: any[]) {
        try {
            this.socketAuthService.authenticate(client);
            this.logger.log(`Client connected: ${client.id}`);
        } catch (e) {
            this.logger.error(`Client ${client.id} tried to connect with invalid token`);
            client.emit('unauthorized', 'Invalid Token');
            client.disconnect();
            this.logger.log(`Client disconnected due to invalid token: ${client.id}`);
        }
    }

我的客户:

this.socket.on('unauthorized', (msg) => {
  console.log(msg);
});

未发送/接收事件。任何想法?

干杯

4

1 回答 1

0

您需要的是使用自定义套接字错误代码和消息关闭套接字。您可以通过使用 socket.close(code, message); 来做到这一点。

socket.close(4004, "Unauthorized Request");

您将在 websockets invalid origin 上收到类似 Postman 异常的异常

于 2021-12-21T19:42:39.090 回答