websocket 底层使用的tcp 协议。 当一次发送数据过长时,tcp 会把数据封成多个包发送;同样当数据过短时, 会把数据合并成一个包发送,这种现象就是粘包。粘包的情况也有可能是接收端造成的。[参考] ( http://m.blog.csdn.net/duotemplar/article/details/73193038 ). tcp协议相关的知识百度之。 粘包出现必然对应拆包处理。处理方案:

eg: 现在通过websocket传输: A 数据, B数据 (只讨论粘包的情况)

i 接收(应用层)AB数据
根据数据的帧信息,先解析A数据,然后解析B数据

ii 接收AB1、B2(B数据分成B1,B2)

解析A数据;根据B1的帧信息(包含数据是否完整、数据长度、数据类型等)可以判断不是完整数据,缓存B1数据;
继续接收数据B2,然后解析B1B2数据(不包含B1、B2的帧信息);

iii 接收A1、A2B (A数据分成A1,A2)

根据A1的帧信息可以判断不是完整数据,缓存A1数据;继续接收A2B数据,解析A1A2数据;然后解析B数据

iv 接收A1、A2B1、B2(A数据分成A1,A2 B数据分B1,B2)

缓存A1;解析A1A2;缓存B1;解析B1B2。

以上只是大致的一个处理思路,实际代码中情况要复杂一些。

websocket粘包处理相关推荐

  1. 自定义Udp/Tcp协议,通信协议Socket/WebSocket,IM粘包、分包解决等(2),ProtocolBuffer

    > 自定义Udp/Tcp协议/通信协议(Java/C):自定义构建和解析IM协议消息:IM自定义UDP通信协议   类似于网络通信中的TCPIP协议一般,比较可靠的通信协议往往包含有以下几个组成 ...

  2. websocket是否需要处理粘包半包问题分析

    结论: ​ 不需要. 背景: ​ 公司通信涉及到websocket相关,我们都知道websocket是基于tcp的,而tcp是面向字节流的,是需要处理粘包半包问题的.那么websocket是否需要处理 ...

  3. websocket底层处理粘包_Socket解决粘包问题1

    粘包是指发送端发送的包速度过快,到接收端那边多包并成一个包的现象,比如发送端连续10次发送1个字符'a',因为发送的速度很快,接收端可能一次就收到了10个字符'aaaaaaaaaa',这就是接收端的粘 ...

  4. Fiddler可以支持Websocket抓包了

    今天试了一下,Fiddler已经可以支持客户端Websocket抓包了,并且查看的方式也非常方便. websocket作为一个标准的应用层的协议,在CS端程序用起来也比传统的tcp协议方便了,比较常见 ...

  5. Socket粘包问题终极解决方案—Netty版(2W字)!

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 上一篇我们写了<Socket粘包问题的3种解决方案>,但没想到评论区竟 ...

  6. netty半包粘包 处理_老王:Netty到底是个什么鬼?有没有简单的理解方式?

    前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考. 作者:lyowish    来源:http://1t.click/7RY # 从HTTP说起 有了Netty,你可以实现自己的HTTP服 ...

  7. (Java)socket网络编程及处理socket粘包拆包问题

    目录 1.socket简介 2.TCP/IP协议 3.tcp三次握手 4.socket的一些接口函数原理 5.java socket 长连接粘包拆包问题 6.socket模拟服务端客户端发消息 7.U ...

  8. Netty框架之编解码机制一(ByteBuf以及Tcp粘包拆包)

    前言 继上次文章后小编很久都没有发布文章了,已经一个多月了,小编还是要努力更新的,最近确实比较忙,并且台风烟花也过来了,愿各地灾情早点过去吧!好了话不多说,今天继续我们的netty的编解码机制.在编解 ...

  9. 即时通讯下数据粘包、断包处理实例(基于CocoaAsyncSocket)

    来源:涂耀辉 www.jianshu.com/p/2e16572c9ddc 如有好文章投稿,请点击 → 这里了解详情 前言 本文旨以实例的方式,使用CocoaAsyncSocket这个框架进行数据封包 ...

最新文章

  1. 济南python工资一般多少钱-济南Python+人工智能
  2. python基础知识整理-python基础知识整理——容器
  3. 通过Web Service获取天气预报并朗读
  4. 胡秀光谋定邦源粮食银行-·万祥军:“互联网+”农业大健康
  5. 2021已去,2022未来
  6. 哈士奇与阿拉斯加雪橇犬的区别
  7. PAT 1017 Queueing at Bank[一般]
  8. leetcode - 303.区域和检索-数组不可变(动态规划)
  9. 茶百科 android代码,基于android平台手机茶百科开发设计---学位论文.doc
  10. dboxShare企业文件共享网盘
  11. ASP.NET Web编程入门-创建一个简单的Web页面
  12. linux系统 32位 64位 jdk下载 jdk6 jdk7
  13. 语义分割系列5-Pspnet(pytorch实现)
  14. 小程序计算当前定位与店铺距离
  15. 【线性代数】6-6:相似矩阵(Similar Matrices)
  16. 微服务中的服务发现是什么?
  17. Object-Oriented Programming Summary Ⅰ
  18. 网络虚拟化——SR-IOV
  19. 一款小巧精致的编辑和编译工具--TextPad
  20. Linux入门和使用

热门文章

  1. NB-Iot烟感08:NB-IOT烟感探测器测试验证方法
  2. 小草酒店客房管理系统 v2.61 单机/网络版 bt
  3. 使用freemarker导出word,wps可以打开,office打不开问题
  4. 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人 高,问排列方式有多少种?
  5. php workman游戏,利用workerman+html开发简单的在线五子棋对战
  6. 在线导播台(网页导播台)混流效果
  7. 2018申请淘宝客AppKey
  8. DP接口与DVI、HDMI、VGA之间的区别,各优劣在哪
  9. 模拟器上运行腾讯x5内核app闪退问题
  10. allergro音乐术语什么意思_钢琴里的leggiero是什么意思