连续帧不能跟随当前操作码

时间:2013-06-03 10:06:39

标签: node.js websocket

我在Node websocket服务器中使用ws

在制作中,我经常收到此错误:

Error: continuation frame cannot follow current opcode

造成这种情况的原因是什么?

如何在开发环境中调试和复制此错误?

编辑:

似乎并不特定于浏览器,我在Chrome,Firefox和IE10以及不同操作系统的连接中捕获了这些错误。

编辑2:

抛出错误here。显然,在带有代码的帧之后接收到具有操作码0的帧!= 1&& != 2。

编辑3:

RFC6455,第5.2节,显示了操作码的含义和框架的解剖结构。

3 个答案:

答案 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
    // ...
}