Websocket基于框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Websocket基于框架相关的知识,希望对你有一定的参考价值。

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

答案

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

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

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


编辑(回答评论)

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

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

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

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

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

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

以上是关于Websocket基于框架的主要内容,如果未能解决你的问题,请参考以下文章

基于动态代理的WebAPI/RPC/webSocket框架

基于flask框架,使用websocket实现一对一聊天室功能

Websocket框架,TCP段:关系?

托管基于 Python 的 Websocket 服务器

有关多语言对WebSocket的支持情况和WebSocket和Socket的区别

Java WebSocket生命周期