“ws”中出现错误“RSV2 和 RSV3 必须清除”

Ken*_*ang 7 websocket node.js express

ws我的应用程序在 Express 服务器中使用来提供 WebSocket 服务。我在生产中看到了很多错误:

RSV2 and RSV3 must be clear
/app/node_modules/ws/lib/Receiver.js:184:18getInfo  
/app/node_modules/ws/lib/Receiver.js:153:16startLoop    
/app/node_modules/ws/lib/Receiver.js:139:10add  
/app/node_modules/ws/lib/WebSocket.js:142:22_ultron.on  
events.js:96:13emitOne  
events.js:188:7emit 
_stream_readable.js:176:18readableAddChunk  
_stream_readable.js:134:10Readable.push 
net.js:547:20onread
Run Code Online (Sandbox Code Playgroud)

我的一些用户似乎偶尔会发生这种情况,但我始终无法在本地环境中重现它。

我可以做什么来进一步调查此错误的根本原因?

rob*_*lep 3

根据RFC6455

RSV1、RSV2、RSV3:各 1 位

必须为 0,除非协商了定义非零值含义的扩展。如果接收到非零值,并且没有任何协商扩展定义此类非零值的含义,则接收端点必须使 WebSocket 连接失败

因此,听起来您的服务器正在处理一个恶意客户端,该客户端设置了 RSV2 或 RSV3(或两者)之一,而没有首先与服务器协商其含义。

我想您应该尝试找出他们正在使用的客户端/浏览器,并且也许先发制人地阻止其建立的连接。