继续框架不能跟随当前的操作码

我在一个Node websocket服务器中使用ws 。

在生产中,我经常得到这个错误:

Error: continuation frame cannot follow current opcode

这是什么原因造成的?

在开发环境中如何去debugging和复制这个错误呢?

编辑:

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

编辑2:

在这里抛出错误。 显然,在一个代码为!= 1 &&!= 2的帧之后接收到操作码为0的帧之后。

编辑3:

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

您可能会在服务器上运行Autobahn Testsuite (模糊客户端模式)。 这会给你一个像这样的详细报告(包括布线)遇到的问题。

披露:我是Autobahn的原创作者,为Tavendo工作。

在继续帧之前,帧需要成为1 / text或2 / binary的连续帧或初始帧。 因此,一个不是连续的,文本或二进制帧的帧被发送。 或者应该先发送新的文本或二进制帧。

要进行debugging,您需要分析客户端上的代码,并检查服务器端的帧,找出为什么发送的帧不按顺序。

我开始看到这个错误,这是由我的server.js中的代码引起的:

 wss.on('connection', function (client, request) { wsg = client; client._socket.setEncoding('utf8'); // <== oops, don't do this // ... }