MQTT 客户端库
MQTT 社区收录了完整的 MQTT 客户端库列表,本章节对热门的每个库都提供连接样例、支持度分析,你可以点击此处 (opens new window)查看。
MQTT 客户端整个生命周期的行为可以概括为:建立连接、订阅主题、接收消息并处理、向指定主题发布消息、取消订阅、断开连接。
以一个客户端连接并发布、处理消息为例,每个环节大致需要进行的步骤:
建立连接:
- 指定传输类型是 TCP 还是 MQTT over WebSocket
- 如果启用 TLS 需要选择协议版本并携带相应的的证书
- Broker 启用了认证鉴权则客户端需要携带相应的 MQTT Username Password 信息
- 配置客户端参数如 keepalive 时长、clean session 回话保留标志位、MQTT 协议版本、遗嘱消息(LWT)等
-
- 指定主题过滤器 Topic,订阅的时候支持主题通配符 与 的使用
- 指定 QoS,根据客户端库和 Broker 的实现可选 Qos 0 1 2,注意部分 Broker 与云服务提供商不支持部分 QoS 级别,如 AWS IoT 、阿里云 IoT 套件、Azure IoT Hub 均不支持 QoS 2 级别消息
- 订阅主题可能因为网络问题、Broker 端 ACL 规则限制而失败
发布消息:向指定主题发布消息
- 指定目标主题,注意该主题不能包含通配符 或 ,若主题中包含通配符可能会导致消息发布失败、客户端断开等情况(视 Broker 与客户端库实现方式)
- 指定消息 QoS 级别,同样存在不同 Broker 与平台支持的 QoS 级别不同,如 Azure IoT Hub 发布 QoS 2 的消息将断开客户端连接
- 指定消息体内容,消息体内容大小不能超出 Broker 设置最大消息大小
- 指定消息 Retain 保留消息标志位
-
- 指定目标主题即可