跳至内容

设备断电/网络丢失时未生成IoT断开连接生命周期事件

0

【以下的问题经过翻译处理】 我发现如果IoT设备失去电源或网络访问,将不会生成断开连接的生命周期事件($aws/events/presence/disconnected/clientId)。似乎只有当mqtt客户端发送断开连接时,才会生成断开连接事件。如果设备失去电源/网络,这显然是不可能产生。处理这个问题的最佳方法是什么?

专家
已提问 2 年前65 查看次数
1 回答
0

【以下的回答经过翻译处理】 嗨,James-ld。事件是会被生成的,但只有在保持连接超时后才会生成。这是MQTT_KEEP_ALIVE_TIMEOUT 断开连接的原因,可以在此处找到说明:https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html#connect-disconnect

如果客户端和服务器之间超过客户端保持连接时间的1.5倍没有通信,客户端将断开连接。

当建立MQTT连接时,可以从客户端设置保持连接超时的时长。例如,使用嵌入式C SDK:https://github.com/aws/aws-iot-device-sdk-embedded-C/blob/1ef5ffc906fa208752bea1ff02156605a86141c7/demos/mqtt/mqtt_demo_mutual_auth/mqtt_demo_mutual_auth.c#L1131。但是,IoT Core将任何小于30的值都视为30:https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits

您可能还对遗嘱消息感兴趣:https://aws.amazon.com/blogs/iot/monitor-aws-iot-connections-in-near-real-time-using-mqtt-lwt/

专家
已回答 2 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。