资讯动态

逐字节读懂 MQTT:Paho 客户端源码精读

发布时间:2026/8/19 12:23:32 来源:尧图企业网站定制
这个系列通过阅读 Paho MQTT 客户端源码每篇文章深入一个 MQTT 特性从协议讲到源码实现建立起完整的 MQTT 协议模型。阶段一连接与会话#标题主题核心源码1从字节到状态机Paho 分层代码地图搞懂 MQTT 三种版本与 Paho 的四层结构拿到整条阅读地图全仓分层2报文的结构固定头、剩余长度与 UTF-8看懂任意 MQTT 报文的字节构成手拼一个 CONNECTMQTTPacket.c / MQTTPacketOut.c3第一次握手CONNECT/CONNACK 与版本协商追踪一次连接从 TCP 到 CONNACK 的完整链路与版本协商MQTTAsync_connect / MQTTClient_connectAll4会话clean session 真正清理了什么分清连接与会话看懂 v3/v5 的会话清理语义connect_options 强制互斥阶段二消息与 QoS#标题主题核心源码5QoS 状态机从 PUBLISH 到 PUBCOMP还原 QoS 0/1/2 完整状态机看懂重发、去重与消息 ID 管理Messages.c / MQTTProtocolOut.c6保留消息与遗嘱消息看懂 retain 与 will 在报文里如何表达、客户端如何处理PUBLISH retain / will 选项阶段三订阅#标题主题核心源码7订阅与路由SUBSCRIBE、通配符与共享订阅吃透订阅报文、通配符语义与 v5 共享订阅订阅报文构造 / Tree.c阶段四连接管理#标题主题核心源码8保活心跳PINGREQ/PINGRESP 与 1.5 倍超时看懂 keepalive 的发送时机、超时判定与半连接兜底MQTTProtocol_keepalive / retryLoopIntervalms9自动重连退避、抖动与传输层自愈还原重连状态机看懂为什么会话层跟不上传输层MQTTAsync_startConnectRetry / checkTimeouts10断线之后connection_lost 与状态清理用 was_connected / shouldBeConnected 区分三种断连路径nextOrClose / checkDisconnect阶段五网络与传输#标题主题核心源码11非阻塞 Socket 与事件循环看懂 partial write、pending writes 与收发缓冲Socket.c / SocketBuffer.c12加密与代理TLS、WebSocket、HTTP 代理看懂 TLS 握手、WS 升级与代理隧道如何接进 MQTT 链路SSLSocket.c / WebSocket.c / Proxy.c阶段六持久化与并发#标题主题核心源码13会话持久化重启后消息不丢看懂持久化了什么、如何恢复、如何自定义接口MQTTPersistence.c / MQTTPersistenceDefault.c14同步 vs 异步线程模型与 token看懂轮询与事件驱动两种模型以及回调/token 的并发约定MQTTClient.c / MQTTAsync.c / MQTTAsyncUtils.c15C 封装paho.mqtt.cpp 的工程视角看懂 C 层如何用 builder、token、RAII 包装 C 库paho.mqtt.cpp/src阶段七收束#标题主题核心源码16MQTT 5.0属性、原因码与协议演进纵向汇总前面各篇的 v3/v5 差异收束成完整模型MQTTProperties.c / MQTTReasonCodes.c

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价