【问题标题】:Am I doing something wrong, or does echo.websocket.org not echo back empty payloads?我做错了什么,还是 echo.websocket.org 没有回显空有效负载?
【发布时间】:2016-01-10 01:31:46
【问题描述】:

According to the spec 对于 websockets 协议 13 (RFC 6455),任何给定帧的有效负载长度可以为 0。

                              frame-payload-data     ; n*8 bits in
                                                     ; length, where
                                                     ; n >= 0

我正在为这个规范构建一个 websocket 客户端,但是当我向 echo.websocket.org 发送一个带有空有效负载的帧时,我什么也没得到。我使用their GUI 也有同样的体验:

这对我来说很麻烦,因为我构建客户端的方式在某种程度上要求我在 FIN 多帧消息时发送空帧。

这仅仅是 Echo 测试服务器中的一个错误吗?大量的服务器实现是否会丢弃带有空负载的帧?

如果这是 Echo Test 中的一个错误,有谁知道我如何与他们取得联系? KAAZING 网站只有他们自己产品的技术支持联系信息。

【问题讨论】:

    标签: websocket


    【解决方案1】:

    如果您发送一个没有有效负载的数据帧,则没有什么可以回显。这种行为是完全正确的。但是,发送回具有 0 负载的数据帧也可能是符合标准的。主要问题是,如果完全通知应用层,何时接收到没有有效负载的数据帧。在大多数实现中可能并非如此。

    与 TCP 类似:TCP-Keepalive 是一个有效载荷为 0 的数据报。它由远程 TCP 堆栈确认,但应用层通知它(即 select() 不返回或 read()-syscall 保持阻塞),这是预期的行为。

    应用层协议不应该依赖数据报来构造数据,而应该仅仅期望字节流而不考虑这些是如何传输的。

    【讨论】:

    • 发回空帧符合什么标准?据我所知,没有回声标准。回显服务器正在响应部分帧(即没有设置FIN 的帧),我认为这些帧不会被中继到应用层。至少,我希望它回显FIN。此外,也许“客户”这个词不好用。我正在构建一个传输层接口。
    • 这就是我的意思,它没有被定义,因此实现可以决定如何处理它。
    【解决方案2】:

    我刚刚在 websocket.org 上尝试了使用空有效负载的 echo 测试,它似乎在使用 Chrome、Safari 和 Firefox(每个版本的最新版本)时都能正常工作。你用的是什么浏览器?

    顺便说一句,该演示程序不遵守任何“回声协议”(afaik),因此没有正式的规范规定如何处理 WebSocket 帧集中的空数据。

    如果您在使用 WebSocket 时需要帮助,请访问 Kaazing 论坛:http://developer.kaazing.com/forums

    【讨论】:

    • 没有浏览器,我使用的是自定义客户端。 “工作正常”是什么意思?在 Firefox 中发送一个空的有效载荷对我没有任何回报。
    • “工作正常”意味着我的浏览器得到了回声。当然没有味精内容,但我得到了“回复”。
    • 这很有趣。没有得到空帧回显我是可以接受的,但由于空帧也是一个 FIN,它实际上导致协议崩溃。
    • 我刚刚尝试使用 Firefox 43.0.4 并得到了预期的空味精响应。
    • 100% 正确。此时不存在 WS-ECHO 标准规范(即,像 TCP PING)。此外,Websocket.org 上的 WS 服务器完全符合 RFC 6455 并处理部分帧。 onmessage() 为所有帧触发,即使是部分帧。由该层之上的应用程序协议决定是否公开此信息。例如,我们基于 WS 的 JMS 库在 JMS 层公开部分帧知识;我们在“幕后”处理这个问题。我们的 AMQP 和 XMPP 库也是如此。另外... TCP 和 WS 只是大致相似。
    猜你喜欢
    • 1970-01-01
    • 2012-05-06
    • 2022-08-22
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    相关资源
    最近更新 更多