1

我试图使用 Jetty WebSocket 进行二进制上传。我已经有一些客户端和服务器代码。如果我发送小的二进制大小,它工作正常,但如果我尝试发送一个长二进制 Jetty 发送错误消息:

“禁用二进制帧聚合”

警告:oejw.WebSocketConnectionRFC6455:帧被丢弃。SCEP@fdbc27{l(/0:0:0:0:0:0:0:1:51199)<->r(/0:0:0:0:0:0:0:1) 禁用二进制聚合:8081),d=true,open=true,ishut=false,oshut=false,rb=false,wb=false,w=true,i=1r}-{WebSocketServletConnectionRFC6455 p=WebSocketParserRFC6455@1264bf5 state=数据缓冲区= g =WebSocketGeneratorRFC6455@144d0c6 关闭=假缓冲区=-1}

4

4 回答 4

0

我有完全相同的问题。我所做的是MaxBinaryMessageSize使用类似this.connection.setMaxBinaryMessageSize(163840000)...默认值是 16384 来更改连接的属性。

所以我得出的结论是我拥有的二进制消息超过了 WebSocket 中定义的最大大小。因此,一种选择是修改 MaxBinaryMessageSize,另一种是使用实现WebSocket.OnFrame接口将消息拆分为多个帧。

于 2013-02-07T14:08:39.300 回答
0

我通过实现WebSocket.OnFrame接口解决了这个问题。我希望这有帮助。

于 2012-07-31T06:13:34.990 回答
0

实施WebSocket.OnFrame似乎也帮助了我。这很容易。在你的onHandshake()你只记得你的connection(或者你可以做到onOpen())。您使用WebSocket.FrameConnectioninonFrame()来处理您收到的数据。就这样 :) 。

于 2013-05-03T09:34:36.610 回答
0

将更大bufferSize的参数放入 init-paramsWebSocketServlet为我解决了这个问题。

于 2016-04-07T04:40:56.457 回答