我在Node websocket服务器中使用ws。
在制作中,我经常收到此错误:
Error: continuation frame cannot follow current opcode
造成这种情况的原因是什么?
如何在开发环境中调试和复制此错误?
编辑:
似乎并不特定于浏览器,我在Chrome,Firefox和IE10以及不同操作系统的连接中捕获了这些错误。
编辑2:
抛出错误here。显然,在带有代码的帧之后接收到具有操作码0的帧!= 1&& != 2。
编辑3:
RFC6455,第5.2节,显示了操作码的含义和框架的解剖结构。
答案 0 :(得分:2)
您可以针对您的服务器运行Autobahn Testsuite(在fuzzing客户端模式下)。这将为您提供详细的报告,例如this(包括有线记录)遇到的问题。
披露:我是Autobahn的原作者,并为Tavendo工作。
答案 1 :(得分:1)
对于一个连续帧来处理帧之前它需要是一个连续帧或1 / text或2 / binary的初始帧。因此,正在发送不是连续帧,文本帧或二进制帧的帧。或者在它应该发送之前发送新的文本或二进制框架。
要进行调试,您需要分析客户端的代码并检查服务器端的帧,以确定它为什么不按顺序发送帧。
答案 2 :(得分:0)
我开始看到这个错误,它是由我的server.js中的代码引起的:
wss.on('connection', function (client, request) {
wsg = client;
client._socket.setEncoding('utf8'); // <== oops, don't do this
// ...
}