websocket - WebSocket ping 可以在消息中间发生吗?
问题描述
我正在尝试简化嵌入式 WebSocket 实现。具体来说,缓冲当前消息和一些随机插入的 Ping 的要求似乎毫无用处(有人说甚至无法使用;见下文),尤其是在我的应用程序中,它不需要长消息。这个“要求”消耗了 1KB 的嵌入式程序 FLASH、140 字节的 RAM、一些处理时间以及大量的代码审查和测试工作,而且似乎没有任何价值。为什么 Web 浏览器不会也永远不会使用 Ping 中断消息传输,是否有可靠的论据?
RFC 6455,Section 5.4 Fragmentation 说:
控制帧(参见第 5.5 节)可以注入到分段消息的中间。控制帧本身不得分段。
然而,专家解释似乎已经确定协议设计的某些内容会阻止服务器在发送消息时发送 Pongs:
想象一下 WS 客户端在 WS 服务器向客户端发送一个非常文本帧的同一时刻发送一个 WS Ping(比如说 10 MB)。由于 WS 协议设计,在当前帧完全发送到客户端之前,服务器无法发送新帧(也不是 Pong 帧!!!)。
我不确定协议“设计”是什么,它阻止服务器专门在碎片消息中间发送 Pong。相同的“设计”是否还会阻止客户端在碎片消息中间发送 Ping?
解决方案
推荐阅读
- google-chrome - Firefox、Chrome 和 Safari 中的 Unicode 字体渲染差异
- flutter - Flutter制作垂直appBar
- javascript - 在 div 中显示内容更改的日期和时间(vanilla JS)
- c++builder - 有什么方法可以从 TDBGrid 中提取值?
- windows - 如何在 Windows 上使用 Vi?
- asp.net-mvc - 重定向到视图操作过滤器属性
- c# - 循环遍历临时目录中的多个文件,并将文件插入到具有现有行/ID 的 MS SQL 数据库中
- php - 如何删除
查看快速创建默认按钮? - r - 强制绘图小提琴图不在零值上显示小提琴
- java - 无法通过 Spotify Docker 客户端将文件复制到 Docker 容器