基于Netty的WebSocket自动解决拆包粘包问题

01 引言

我们做了Websocket的案例,并没有像TCP协议一样处理拆包和粘包问题。Websocket基于Frame已经自动帮我们解决了拆包和粘包问题,我们一起来看看是怎么解决的!

02 WebSocketFrame

WebSocketFrame是 Netty 中用于表示WebSocket协议数据帧的抽象基类。在WebSocket通信中,所有数据(文本、二进制、控制帧等)都通过帧的形式进行传输。

核心属性

// 帧的最终标志位(FIN)privatefinalbooleanfinalFragment;// 保留位(RSV1, RSV2, RSV3)privatefinalintrsv;

finalFragment参数是解决拆包粘包的关键标志位。

03 处理流程

3.1 调用链

3.2 解码关键类

io.netty.handler.codec.http.websocketx.WebSocket08FrameDecoder

WebSocket协议定义了明确的帧格式,每个帧都有明确的边界标识:

关键字段:

  • FIN位(1位):标识是否是消息的最后一个帧
  • opcode(4位):操作码,标识帧类型(文本、二进制、控制帧等)
  • MASK位(1位):标识是否掩码
  • Payload length(7位):负载长度,自动扩展

WebSocket08FrameDecoder专门定义了解析帧的字段。

其中关键的代码块:

byteb=in.readByte();frameFinalFlag=(b&0x80)!=0;

(b & 0x80) != 0是用于检测某个字节 b 的最高位(即第7位,从右往左数)是否为1。如果为1,则返回true,表示数据已经读完。这里正是解决拆包粘包的关键标志位。

3.3 整个解析流程

  • 长度字段解析:首先读取帧头部,解析payload长度
  • 动态读取:根据长度字段值,读取相应字节数的数据
  • 帧完整性检查:检查FIN位,确定消息是否结束
  • 消息聚合:对于分片消息(FIN=0),自动缓存和重组

04 小结

WebSocket的拆包粘包问题已经妥善解决,开发者只需要配置WebSocketServerProtocolHandler,Netty就会在合适的时机自动创建和配置WebSocket13FrameDecoder。为我们解决困扰,无需手动处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1169581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Acrel-2000T系统:35kV开关柜无线测温优选方案

唐雪阳安科瑞电气股份有限公司 上海嘉定 201801摘要:在近年来科技不断发展进步的背景下,电力行业相关技术中出现了许多新技术。为保证电力的稳定供输,防止变电站设备高温造成的过载损坏,需要对设备的运行温度进行实时监测&#x…

MatCalc 6.10免费材料科学模拟软件

MatCalc 6.10 是一款在材料科学与工程领域处于领先地位的专业软件,专注于合金的热力学、动力学计算与微观组织演化的高精度模拟。本次版本更新在核心计算引擎、数据库和用户体验方面进行了显著增强,旨在为研究人员和工程师提供更强大、更高效的材料设计与…

学长亲荐!8款AI论文平台测评:研究生毕业论文写作全攻略

学长亲荐!8款AI论文平台测评:研究生毕业论文写作全攻略 2026年AI论文平台测评:选对工具,效率翻倍 随着人工智能技术的不断进步,越来越多的研究生开始借助AI工具辅助论文写作。然而,面对市场上琳琅满目的平…

软件开发高级进阶必备工具--Git与Gitee

现在的项目开发,都是团队协作,需要好的软件管理工具,而Git和Gitee是一种非常好的管理方案。 Git教程 什么是 Git 代码库? Git 代码库是项目的虚拟存储区域。它可让您保存代码的各个版本,以便在需要时进行访问。 初始化新代码库:git init 要创建新的代码库,您将使用 git…

软件工程师高级必备工具1-Git代码管理使用教程

Git 与 Gitee 完全指南 本文档将为您提供一份从零开始的 Git 和 Gitee 使用教程,涵盖从基础概念到日常操作的全流程。 1. 基本概念 1.1 什么是 Git? Git 是一个分布式版本控制系统,用于跟踪文件变化,协调多人协作开发。 版本控制:记录文件每次修改,可回溯到任意历史版…

2026年环保垃圾房厂家实力推荐榜:移动/分类/智能/定制化垃圾回收房全场景应用方案 - 品牌推荐官

在城市现代化进程中,环保垃圾房作为垃圾分类与处理的关键基础设施,其质量与功能直接影响着城市卫生管理水平与居民生活质量。随着垃圾分类政策在全国范围内的深入实施,2025年,全国垃圾分类收集设施覆盖率已达到85%…

基于支持向量机的健康水平预测(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于支持向量机的健康水平预测(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 数据来源于kaggle,使用25年的新数据对人群健康水平分析。采用三种机器学习模型(支持向量机、决策树、随机森林&#xff09…

基于yolo11的水稻田杂草检测报告(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于yolo11的水稻田杂草检测报告(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 三种模型权重对比,含数据集和训练结果。电子资料,内容包括模型训练过程、损失曲线、验证集指标等,适合AI、图…

热销榜单:2026年高口碑重庆全屋定制厂家推荐 - 睿易优选

在重庆全屋定制木质家具市场中,各大品牌竞争激烈,伙伴类型多样,消费者在选择时需考虑多个因素。本榜单精选了2026年口碑较好的厂家,从设计理念、材料选择到售后服务,均有详细的分析。尤其是一些品牌如重庆志想家具…

【LangChain V1.0学习】第二课:批处理与持久化对话(通过完成情感机器人多轮对话进行学习)

我们在上一节课学习了LangChain V1.0的模型调用与基础对话,今天这节课我们来学习大模型的批处理对话,我们通过制作简单的带有简易记忆机制的对话机器人,来学习并熟练掌握该用法。 一、前期准备 1、方法介绍 今天我们要用到的是langchain_core…

【真香警告】掌握这3层Agent架构,让AI帮你写代码而不是抢饭碗!

前期导览: 大家好,本期我们继续研究Open Deep Research这个项目的源代码。上一期我们学习了动态模型配置的实现,本期我们将重点关注多Agent架构的设计与实现。 在多Agent系统中,如何设计Agent之间的协作机制、如何实现任务的分解…

电脑屏幕显示不全最左边看不到关机键

电脑屏幕显示不全最左边看不到关机键Posted on 2026-01-16 19:07 董锡振 阅读(0) 评论(0) 收藏 举报 换一个频次就好了 本文来自博客园,作者:董锡振,转载请注明原文链接:https://www.cnblogs.com/dongxizhen/…

RAG评估保姆级教程:从“感觉良好“到“数据说话“,小白程序员也能秒懂的RAG评估避坑指南!

大家好,我是AI学习的杨同学。我们是不是都踩过同一个坑:花数周搭建的RAG系统,上线后用户反馈“答非所问”“信息造假”;调整了chunk大小、换了向量模型,却说不清效果提升了多少;生产环境幻觉率忽高忽低&…

实用指南:Java-187 Guava Cache 并发参数与 refreshAfterWrite 实战:LoadingCache 动态加载与自定义 LRU 全解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:5G工业路由器的深层架构:从射频热管理到链路状态机

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

程序员必看!LLM读不懂工业标准?试试这个Ontology-aware KG-RAG框架,表格任务直接起飞!

一、LLM 单啃工业标准会“消化不良”? 船舶、海工、能源等行业的工业标准(ASTM、API、ISO 等)往往长这样: 一份文档 60 页,层层嵌套“1-1.1-1.1.1-Table 3-Note b”;一段句子包含条件-例外-数值-单位四连…

淋雨试验箱优质供应商排行榜:帮你避开选购陷阱,找到真正靠谱的厂家 - 品牌推荐大师1

在“中国制造2025”战略和产业升级的双重推动下,中国环境试验设备行业迎来了黄金发展期。淋雨试验箱作为评估产品外壳防水性能的关键设备,其市场需求随着新能源汽车、5G通信、消费电子等行业的蓬勃发展而持续增长。 …

救命!我的AI只会说“好的“!揭秘大模型“规划模式“,让AI自己干活才是真AI!

让智能体“组织一次10人的团队团建”,它直接回复“好的”,却迟迟不给出具体方案;让它“处理新员工入职流程”,它只想到了创建账号,却遗漏了培训分配、部门对接等关键步骤;让它“生成一份季度业务分析报告”…

从 AIGC 检测逻辑看论文降重工具的实际差异 - 品牌观察员小捷

起因:为什么“降重完成”≠“审核安全” 在最近一年的论文修改实践中,越来越多用户发现:论文重复率已合格 但 AIGC 检测仍提示高风险 这并非偶然,而是因为 AIGC 检测关注的不是“抄没抄”,而是“像不像人写的”。…

【硬核推荐】Lemon AI Agent:不会编程也能开发神器?从需求到交付全自动搞定,小白秒变大神!

Lemon 是一款开源的General AI Agent通用智能体,能够从需求计划到成果交付全流程自动化,它通过独立思考和系统规划,在虚拟环境中灵活调用各类工具,如编写并执行代码、智能浏览网页、操作网页应用、命令执行等。Lemon 擅长将复杂任…