我试图使用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}
答案 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中为我解决了这个问题。