问题描述
IoT 中心通过事件网格 according to the documentation 发布事件“DeviceConnected”和“DeviceDisconnected”。
我的问题是,实际物联网设备的哪个动作会触发这些事件?
对于“DeviceConnected”事件:
- 是否在客户端 SDK 上调用 OpenAsync 方法时触发?
- 是否在调用 SendEvent 方法时隐式触发?
- 此事件是否也可通过直接 AMQP/MQTT 连接获得?
- 它会保持这种状态多久?
对于“DeviceDisconnected”事件:
- 一旦调用 DeviceClient 上的“关闭”,设备是否会“断开连接”?
- 如果连接不好怎么办?是否有持续的 ping 以及超时机制,用于在设备空闲一段时间后将其标记为离线?
我们目前已按照 here 所述实施了心跳模式,但我们想知道是否有一种更简单且最终更具成本效益的方法来实现相同的目标。
解决方法
中找到了这段话
仅针对使用 MQTT 或 AMQP 的设备更新连接状态。 此外,它基于协议级 ping(MQTT ping 或 AMQP ping), 并且最多只能延迟 5 分钟。由于这些原因, 可能存在误报,例如设备报告为已连接 但那是断开的。
这涵盖了我的大部分问题。