如何从Azure IoT Hub接收设备连接事件?

时间:2017-01-25 20:50:39

标签: azure-iot-hub

是否可以在没有轮询的情况下获得设备已连接到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
    }
}

我想要的是能够获取所有已注册的设备,将它们保存在内存中,并且只是监听连接事件。

3 个答案:

答案 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