MQTT客户端及设备SDK相关问题
请问是否有基于FreeRTOS或者RTX操作系统的MQTT SDK源码?
我们提供了 C 的 SDK https://github.com/baidu/iot-sdk-c
另外也可以选择 paho 的开源版本,提供了多个版本的C/C++ client,有的是支持posix标准的(unix、linux、windows),有的是支持嵌入式系统的。可以参考这个连接:https://www.eclipse.org/paho/clients/c/embedded/
为什么publish的QOS等级为2后,则会断开服务?
目前暂不支持Qos=2的服务。
与 IoT Core 服务连接成功,往一个主题发送消息,就直接断开。
此情况一般出现在对应主题无 pub 权限。请检查对应模板中主题权限的配置。
连接服务时,出现连接协议错误。
大多是由于选择的端口和期望的协议不一致,正确端口号是TCP:1883, TLS:1884,Websocket:8884。
遗嘱消息的触发条件有哪些?
遗嘱(Will Message)消息必须被存储在服务端并且与这个网络连接关联。网络连接关闭时,服务端必须发布这个遗嘱消息,除非服务端收到Client发送的DISCONNECT报文。
遗嘱消息发布的条件,包括但不限于:
- 服务端检测到了一个I/O错误或者网络故障。
- 客户端在保持连接(Keep Alive)的时间内未能通讯。
- 客户端没有先发送DISCONNECT报文直接关闭了网络连接。
- 由于协议错误服务端关闭了网络连接。
MQTT客户端网络连接异常,但在keepalive时间内恢复,客户端是否需要重新建立MQTT连接?
需要,如果MQTT客户端异常断开,都需要重新建立MQTT连接并重新订阅主题。
如果MQTT客户端cleansession=false,连接异常断开后,服务器会维护session信息,重新连接后不需要再订阅主题。
推送消息时鉴权方式是什么?会对服务功能有哪些影响?
推送消息鉴权是对订阅端接收消息进行鉴权,会在设备订阅主题时鉴权成功订阅主题后,在主题消息最终推送订阅端时再次进行鉴权。主要影响表现在clean session =false的订阅端的离线消息,对于clean session=false的订阅端,根据协议在设备断开连接后仍旧能够接收到订阅主题的消息(离线消息)并在设备再次连接后收到这些离线消息,如果在设备离线期间对于设备模版存在管理操作导致订阅主题权限变化如删除主题权限,将会导致对应主题消息不会被推送到最终订阅端设备。
推送消息鉴权验证时发现操作(删除)订阅设备模版中对应订阅主题权限后,仍旧能够收到对应主题离线消息?
需要确认下设备模版是否存在#,+等类型统配订阅主题包含对应具体订阅主题,如果存在则对核心套件服务端而言对具体主题的消息推送时鉴权时具体主题属于统配主题可匹配项,相当于仍旧具有对应主题权限,所以仍旧可以收到对应具体主题的离线消息
Error日志:Retain flag not supported
当发布者发布的消息Retain设置成true时,在IOT Core的日志中可能会出现Error日志,日志内容为Retain flag not supported。这是因为在IOT Core中,Retain消息功能是默认未开通的。您可以提交工单提供下Retain消息的使用场景和用量预估,需要评估后即可开通。
在正式开放前, Retain 消息暂时与普通消息价一致,具体请查看价格详情页面。