2016-12-29 45 views
0

当我尝试通过使用码头的WebSocket客户端发送大的文本(约40M),我得到这个的ProtocolException:ProtocolException在jetty websocket中意味着什么?

org.eclipse.jetty.websocket.api.ProtocolException:无效控制帧有效载荷长度,[142]不能超过[125] at org.eclipse.jetty.websocket.common.Parser.assertSanePayloadLength(Parser.java:122) at org.eclipse.jetty.websocket.common.Parser.parseFrame(Parser.java:482) at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:254) at org.eclipse.jetty.jetty.jsp.mon.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:628) at org.eclipse。 jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConn ection.java:476) at org.eclipse.jetty.io.AbstractConnection $ 2.run(AbstractConnection.java:540) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) 在org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run(QueuedThreadPool.java:555) 在java.lang.Thread.run(Thread.java:745)

我修改了maxTextMessageSize,使其向发大文。任何想法为什么ws关闭?

回答

1

org.eclipse.jetty.websocket.api.ProtocolException:无效控制帧有效载荷长度,[142]不能超过[125]

即说网页套​​接字执行接收到的WebSocket控制帧(CLOSE ,PING,PONG),它有142个字节的有效载荷,这违反了WebSocket规范(见RFC6455 Section 5.5),它将控制帧限制为只有125个字节的有效载荷。

的maxTextMessageSize仅适用于从数据帧整体收集邮件大小(TEXT和0或多个后续帧)

+0

你有想法,为什么WS控制帧具有无效的大小? – Jane

+0

这可能来自于您使用WebSocket的错误实现,或者针对新版本WebSocket的旧版WebSocket。例如:Jetty 9.3.8是WebSocket的渗透压缩的第一个稳定版本,与最新的Chrome和Firefox修补程序适用于渗透压缩。 –