websocket在chrome上接收超过2 ^ 15个字节的错误:收到一个设置压缩位的帧,而另一个解压缩正在进行

时间:2014-03-14 14:27:19

标签: google-chrome websocket jetty

我试图通过websocket将JSON传递给html GUI。当size大于32768字节时,chrome会引发此异常:

  

与'ws:// localhost:8089 / events /'的WebSocket连接失败:收到一个设置压缩位而另一个解压缩正在进行的帧

在实例化WebSocket的行上:

this._websocket = new WebSocket(url);

然而它在firefox上工作正常。我在服务器端使用了jetty 9.1.3,我尝试使用chrome 33和34 beta。

我忘了确切地说,如果我发送长度超过32768字节的消息,在chrome的网络调试工具上,它显示32768字节长度而不是实际消息长度。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

使用Jetty 9.1.2.v20140210时,我对连接没有任何问题,但是后来的9.1.3.v20140225版本失败,我使用OperaChrome收到错误。 Firefox适用于所有版本。

我向Jetty提交了一个错误报告:https://bugs.eclipse.org/bugs/show_bug.cgi?id=431459

答案 1 :(得分:1)

这可能是Jetty中的一个错误。

permessage-deflate要求在碎片消息的第一个帧上设置压缩位 - 并且仅在此处。

可能是Jetty将传出消息分段为32k片段,并在所有帧上设置压缩位。如果是这样,那就是一个错误。

我刚刚使用Autobahn|Testsuite测试了当前的Chrome 33:一切都按预期工作..包括128k的消息。

您可以使用上述测试套件测试Jetty。如果有错误,它会抓住它。