Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 我们如何从Nestjs网关(websockets)捕获升级http请求_Node.js_Websocket_Nestjs_Ws - Fatal编程技术网

Node.js 我们如何从Nestjs网关(websockets)捕获升级http请求

Node.js 我们如何从Nestjs网关(websockets)捕获升级http请求,node.js,websocket,nestjs,ws,Node.js,Websocket,Nestjs,Ws,为了在NestJS中使用websocket手动实现身份验证过程,我使用的是NestJS网关,但在为websocket连接之前的握手过程中发送的“升级”http请求设置处理程序时遇到问题。有没有办法在某个地方设置一个函数,使我能够捕获此请求,以便尽快拒绝访问 这将允许更快地停止进程,并且如果http请求中没有有效的身份验证令牌,则无法打开套接字。 我发现我可以使用websocket实例的protocol字段(客户端只需在websocket连接上设置第二个参数)在事后验证套接字,但我更喜欢不必处理“

为了在NestJS中使用websocket手动实现身份验证过程,我使用的是NestJS网关,但在为websocket连接之前的握手过程中发送的“升级”http请求设置处理程序时遇到问题。有没有办法在某个地方设置一个函数,使我能够捕获此请求,以便尽快拒绝访问

这将允许更快地停止进程,并且如果http请求中没有有效的身份验证令牌,则无法打开套接字。
我发现我可以使用websocket实例的protocol字段(客户端只需在websocket连接上设置第二个参数)在事后验证套接字,但我更喜欢不必处理“坏”套接字,以便在连接后立即关闭,并在通过http的初始握手时停止,无论过程如何。

我看到的最好的例子是:

请注意,该示例是可行的,但包似乎缺少package.json中的一些依赖项

他正在用JWT进行身份验证,但我相信你可以很容易地适应这种方法

根据描述:

如果用户未正确身份验证(在连接事件之前,但在升级时),此项目将尝试阻止建立websocket连接

并且正在使用中

只需从基类(SocketGateway)继承,如果希望对套接字进行身份验证,请创建一个init方法,并使用@SocketIt()对其进行修饰,然后调用身份验证方法

@SocketInit()
  public initTest(request: IncomingMessage) {
    return this.authenticate(request);
  }