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