2

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

在生产中,我经常收到此错误:

Error: continuation frame cannot follow current opcode

这是什么原因造成的?

应该如何在开发环境中调试和复制这个错误?

编辑:

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

编辑2:

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

编辑 3:

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

4

3 回答 3

2

您可以针对您的服务器运行Autobahn Testsuite (在模糊客户端模式下)。这将为您提供遇到的问题的详细报告(包括有线日志)。

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

于 2013-12-11T17:13:31.890 回答
1

对于一个延续框架来说,在它需要是一个延续框架或 1/text 或 2/binary 的初始框架之前工作的框架。因此,正在发送一个不是延续、文本或二进制帧的帧。或者一个新的文本或二进制帧在它应该发送之前被发送。

要进行调试,您需要分析客户端的代码并检查服务器端的帧,以找出它发送帧乱序的原因。

于 2013-12-10T19:21:54.853 回答
0

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

wss.on('connection', function (client, request) {
    wsg = client;
    client._socket.setEncoding('utf8'); // <== oops, don't do this
    // ...
}
于 2017-11-09T21:45:57.327 回答