结论:
不需要。
背景:
公司通信涉及到websocket相关,我们都知道websocket是基于tcp的,而tcp是面向字节流的,是需要处理粘包半包问题的。那么websocket是否需要处理半包粘包问题呢?就需要来分析下。
分析:
websocket协议帧分析
websocket中是基于frame来传递数据的,帧结构定义如下:
看第一个bit位置FIN位,表示当前是否有后续帧,如果为0表示还有后续帧,如果为1则表示当前是最后一帧。那么其实只要分析我们所用的通信库对这个FIN位的处理,就可以看出是否需要处理粘包问题。
以asio库分析是否需要处理粘包
以asio库为例。其中frame_header结构表示了websocket的frameheader,其中fin映射到了FIN位置
在内部维护了一个flag,rd_done用来表示是否读完一包数据,而在这包数据读完时,才会触发数据接收完成,故在应用层,就不需要在做半包粘包的处理了。文章来源:https://www.toymoban.com/news/detail-517990.html
文章来源地址https://www.toymoban.com/news/detail-517990.html
到了这里,关于websocket是否需要处理粘包半包问题分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!