是否可以在没有轮询的情况下获得设备已连接到IoT集线器的通知?
我发现的唯一选择是轮询RegisteryManager.GetDevicesAsync()
并循环注册设备以查看它们是否已连接。我可以进行民意调查,但我不知道存在什么样的限制限制。
该代码如下:
var devices = await registryManager.GetDevicesAsync(maxCountOfDevices);
if (devices != null)
{
foreach (var device in devices)
{
// do something with the connection state like
// notify services
device.ConnectionState
}
}
我想要的是能够获取所有已注册的设备,将它们保存在内存中,并且只是监听连接事件。
答案 0 :(得分:1)
两个月前,在azure-iot-sdk的GitHub页面上,我有类似的问题。您可以查看Microsoft提议的工程师: https://github.com/Azure/azure-iot-sdks/issues/988 我希望它会有所帮助。
答案 1 :(得分:0)
我在Azure IOT Hub中使用操作监控进行了尝试。它提供了一个事件中心端点来读取详细操作。所以在这里我发现IOT设备与IOT集线器的连接和断开事件。但现在问题是设备消息和连接/断开事件是异步的。
答案 2 :(得分:0)
Microsoft Azure IoT团队建议实施心跳模式,因为connectionState不准确: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-identity-registry#device-heartbeat