我的应用使用Express服务器中的ws
来提供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
我的某些用户似乎偶尔会发生这种情况,而且我无法在我的本地环境中重现它。
如何进一步调查此错误的根本原因?
答案 0 :(得分:0)
根据RFC6455:
RSV1,RSV2,RSV3:每位1位
除非协商扩展定义含义,否则必须为0 对于非零值。如果收到非零值且没有 协商扩展定义了这种非零的含义 值,接收端点必须使WebSocket失败 连接
所以听起来你的服务器正在处理一个设置RSV2或RSV3(或两者)之一的流氓客户端,而没有先与服务器协商它们的含义。
我想您应该尝试找出他们正在使用的客户端/浏览器,并且可能会先发制人地阻止它所建立的连接。