2012-07-27 58 views
1

我试图使用Jetty WebSocket进行二进制上载。 我已经有一些客户端和服务器代码。它工作正常,如果我送小二进制文件大小,但如果我尝试发送一个长二进制码头发送一个错误信息:jetty(WebSocket)禁用二进制帧聚合

WARN“禁用二进制帧聚合”:oejw.WebSocketConnectionRFC6455:帧丢弃。二进制聚合在SCEP @ fdbc27 {l(/ 0:0:0:0:0:0:0:1:51199)<→r(/ 0:0:0:0:0:0:1:51199) :8081),d = true,open = true,ishut = false,oshut = false,rb = false,wb = false,w = true,i = 1r} - {WebSocketServletConnectionRFC6455 p = WebSocketParserRFC6455 @ 1264bf5 state = DATA buffer = g = WebSocketGeneratorRFC6455 @ 144d0c6 closed = false buffer = -1}

回答

0

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

0

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

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

0

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

0

将较大的bufferSize放入初始参数WebSocketServlet为我解决了这个问题。