tencent cloud

物联网通信

动态与公告
产品动态
产品简介
产品概述
产品功能
产品优势
应用场景
产品限制
基本概念
快速入门
快速开始
场景一:设备互通
场景二:设备状态上报与状态设置
MQTT.fx接入指南
控制台使用手册
产品管理
规则引擎
子账号访问IoT
固件升级
资源管理
证书管理
开发者手册
功能组件
签名方法
设备身份认证
设备接入协议
网关子设备
消息通信
设备影子
设备固件升级
设备远程配置
资源管理
设备日志上报
NTP服务
设备端接入手册
设备接入概述
基于C SDK接入
基于 Android SDK 接入
基于 Java SDK 接入
基于 Python SDK 接入
API 文档
History
Introduction
API Category
Making API Requests
Device Shadow APIs
Device APIs
CA Certificate APIs
Product APIs
Data Types
Error Codes
常见问题
一般性问题
设备接入和上报问题
规则引擎问题
控制台相关问题
IoT Hub 政策
隐私协议
数据处理和安全协议
词汇表

MQTT 持久性会话

PDF
聚焦模式
字号
最后更新时间: 2024-12-27 15:44:26
物联网通信支持 MQTT 协议 V3.1.1 版本,同时支持 QOS0 与 QOS1 的服务质量等级(不支持 QOS2)。使用 MQTT 持久性会话,可保存设备的订阅状态及设备未接收到的订阅消息。设备离线后再次上线时可恢复至之前的会话,并接收到离线时未接收到的订阅消息。

设备端创建 MQTT 持久性会话

设备连接物联网通信时,可将 Connect 连接报文可变报头部分的 CleanSession 标志位设置为0。物联网通信会根据设备连接时的客户端标识符 ClientId 对设备的会话状态进行判断,若当前没有会话则将会创建一个新的持久性会话,若存在已有会话则基于已有的会话进程进行通讯。

物联网通信响应说明

设备端发送 Connect 报文之后,物联网通信将会返回 Connack 报文,报文在连接确认标志位 SessionPresent 中,表明物联网通信是否已包含设备连接时的客户端标识符所对应的会话状态。SessionPresent 为0表示未创建持续性会话,设备端需要重新建立会话状态。SessionPresent 为1表明已创建持续性会话。
设备端成功连接之后,若进入已有的持久性会话,则物联网通信会将存储的 QOS1 消息和未确认的 QOS1 消息发送到设备端。
设备端成功连接之后,若创建了新的持久性会话,物联网通信将会保存设备的订阅状态,并在设备离线时将设备已订阅的 QOS1(不包含 QOS0)消息进行存储。设备再次上线时会将存储的 QOS1 消息和未确认的 QOS1 消息发送到设备端。
说明:
物联网通信发送存储的 QOS1 消息时会按照500ms的间隔依次下发。
可持久性会话中只存储 QOS1 消息,存储消息单设备最多150条,最多存储24小时。

关闭 MQTT 持久性会话

可通过以下两种方式关闭 MQTT 持久性会话。
设备连接物联网通信时,将 Connect 连接报文可变报头部分的 CleanSession 标志位设置为1。
设备断开连接的时间超过24小时,持久性会话会自动关闭。
说明:
设备的断开连接包含设备发送 disconnect 消息和设备通信超时导致的断开连接。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈