jetty(WebSocket)禁用二进制帧聚合

时间:2012-07-27 11:27:21

标签: binary websocket jetty frame

我试图使用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 = DATA buffer = g = WebSocketGeneratorRFC6455 @ 144d0c6 closed = false buffer = -1}

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

实施WebSocket.OnFrame似乎也对我有所帮助。这很容易。在onHandshake()中,您只需记住connection(或者您可以在onOpen()中执行此操作)。您可以在WebSocket.FrameConnection中使用onFrame()来处理您收到的数据。这就是全部:)。

答案 3 :(得分:0)

将更大的bufferSize放入WebSocketServlet的init-params中为我解决了这个问题。