【问题标题】:what does ProtocolException mean in jetty websocket?码头 websocket 中的 ProtocolException 是什么意思?
【发布时间】:2017-05-13 08:47:29
【问题描述】:

当我尝试使用 jetty websocket 客户端发送大文本(大约 40M)时,我得到了这个 ProtocolException:

org.eclipse.jetty.websocket.api.ProtocolException:无效的控制帧有效载荷长度,[142]不能超过[125] 在 org.eclipse.jetty.websocket.common.Parser.assertSanePayloadLength(Parser.java:122) 在 org.eclipse.jetty.websocket.common.Parser.parseFrame(Parser.java:482) 在 org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:254) 在 org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:628) 在 org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:476) 在 org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) 在 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 吗?

【问题讨论】:

    标签: websocket jetty


    【解决方案1】:

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

    这表示 websocket 实现收到了一个包含 142 字节有效负载的 WebSocket 控制帧(CLOSE、PING、PONG),这违反了 WebSocket 规范(参见RFC6455 Section 5.5),它将控制帧限制为仅 125 字节有效载荷。

    maxTextMessageSize 仅适用于从数据帧(TEXT,以及 0 个或多个 CONTINUATION 帧)中收集的整体消息大小

    【讨论】:

    • 你知道为什么 WS 控制框的大小无效吗?
    • 这可能是由于您使用了错误的 WebSocket 实现,或者是旧版本的 WebSocket 与新版本的 WebSocket。例如:Jetty 9.3.8 是 WebSocket 的 permessage-deflate 的第一个稳定版本,可与最新的 Chrome 和 Firefox 修复 permessage-deflate 一起使用。
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多