Websocket基于框架

问题描述 投票:-1回答:1

我从here读到,Websocket是一种基于帧的协议,而不是基于流的协议。但它也说明为什么WebSockets基于帧而不是基于流?我不知道,就像你一样,我很想了解更多信息,所以如果您有任何想法,请随时在下面的回复中添加评论和资源。 任何人都可以解释在Websocket中使用基于框架的协议的优势是什么?

tcp websocket frame
1个回答
1
投票

也许this预先存在的答案将有助于为讨论提供一些参考。

通过利用框架和基于按摩的协议(相对于基于流的协议),可以更轻松地编写面向Web的应用程序。

常见操作(例如发送JSON数据)变得更加容易,并且不需要每个应用程序都为碎片消息实现网络数据缓冲/缓存层。


编辑(回答评论)

TCP / IP层保证了网络数据包的传送和排序,但没有数据长度的概念 - 它是一个流协议,它承诺流将按顺序到达,不多于此。

如果任何数据无序到达,则TCP / IP协议层将重新排序数据。这可能需要内部缓存/缓冲区,以便在等待丢失数据时保留现有数据。

相反,WebSocket是基于消息的,并且知道消息数据长度。

WebSocket框架使用具有数据长度(总数/部分)的标头,以允许WebSocket协议层将所有数据作为单个单元进行连接,即使它分布在多个TCP / IP数据包或(甚至)WebSocket帧上也是如此。

这要求协议层将数据保存在内部缓冲区中,直到消息中的所有预期数据到达。只有当整个数据到达时,WebSocket协议才会将消息转发给应用程序。

这个“保持数据”以便从流中提取消息“单元”是我所指的缓存/缓冲元素。

© www.soinside.com 2019 - 2024. All rights reserved.