Websocket WebStutping会发生在消息的中间吗?

Websocket WebStutping会发生在消息的中间吗?,websocket,embedded,Websocket,Embedded,我试图简化嵌入式WebSocket实现。具体地说,缓冲当前消息和一些随机中断的Ping的要求似乎毫无用处(有些人说甚至不可能使用;见下文),尤其是在我的应用程序中,它不需要长消息。这个“需求”消耗1KB的嵌入式程序闪存、140字节的RAM、一些处理时间以及大量的代码审查和测试工作,似乎没有带来任何价值。为什么web浏览器不会,也永远不会用ping中断消息传输,有没有确凿的证据 RFC 6455第5.4节规定: 控制帧(见第5.5节)可在中间注入。 一条支离破碎的信息。控制帧本身不能被删除 支离破

我试图简化嵌入式WebSocket实现。具体地说,缓冲当前消息和一些随机中断的Ping的要求似乎毫无用处(有些人说甚至不可能使用;见下文),尤其是在我的应用程序中,它不需要长消息。这个“需求”消耗1KB的嵌入式程序闪存、140字节的RAM、一些处理时间以及大量的代码审查和测试工作,似乎没有带来任何价值。为什么web浏览器不会,也永远不会用ping中断消息传输,有没有确凿的证据

RFC 6455第5.4节规定:

控制帧(见第5.5节)可在中间注入。 一条支离破碎的信息。控制帧本身不能被删除 支离破碎

但是,似乎已经确定协议设计的某些方面阻止了服务器在发送消息时发送PONG:

假设WS-client在WS-server发送WS-Ping的同时发送WS-Ping 正在向客户端发送一个非常文本的帧(比如说10 MB)。由于 在WS-protocol设计中,服务器不能发送新帧(也不能发送新帧) Pong frame!!!)直到当前帧完全发送到客户端


我不知道协议的“设计”是什么,它阻止服务器在碎片化消息的中间专门发送密码。同样的“设计”也能防止客户端在碎片消息中发送Ping吗?

RFC 6455也注意到这些帧充当KeaPovior或心跳消息。因此,当数据传输已经在进行时,它没有任何用途。但是,没有任何东西可以阻止终结点发送数据。@如果数据传输暂停很长时间,则当数据传输正在进行时,Liju Keepalive可能很有用。数据传输过程中的长时间暂停或延迟由具有重新传输超时的底层TCP控制。即使在暂停期间发送keep alive,也不会立即发送,而是按照RFC793 3.8排队。@liju。对不起,我指的是发送端的瓶颈,而不是TCP暂停。WebSocket碎片的要点是发送方可以发送一个片段,然后它的磁盘速度会变慢。它得到TCP确认(因此没有重新传输),但是剩余的片段很长时间都没有准备好。这时您可能需要插入一个ping。话虽如此,如果他们只是将消息变小,而不是使用片段,那就简单多了。我猜发明家们是想挤出最后一点开销。并且未能使复杂性成为可选的。