2013-06-03 24 views
2

我在一个Node websocket服务器中使用ws继续框架不能跟随当前的操作码

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

Error: continuation frame cannot follow current opcode

是什么原因造成的?

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

编辑:

似乎没有具体到一个浏览器,我已经在除Chrome,Firefox和IE10的连接,并从不同的操作系统捕获这些错误。

编辑2:

则抛出Error here。 !显然接收与操作码0的帧的帧后,用代码后= 1 & & = 2

EDIT 3:

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

回答

1

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

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

+0

每规范,延续(操作码0)框架可以按照任何鳍==虚假数据帧(操作码0,1或2)或ping(操作码9)或pong(操作码10)。请注意,ping/pong可以位于一组帧的中间,对这些帧构成的整体消息没有影响。 –

2

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

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

0

我开始看到这个错误,它是由这个代码在我server.js造成的:

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