我目前正在寻找一种方法来撤销连接到Azure Iot Hub的设备的设备会话。
例如,当设备使用证书进行连接并且证书过期时,该设备仍然可以在具有有效令牌的情况下发送和接收数据。
我们的案例是,如果设备由于任何原因使我们的IoT中心过载,我们希望能够立即取消连接。 我们希望能够撤销此类令牌,以便立即断开特定设备的连接。
是否有可能这样做?如果没有,是否有解决方法?
答案 0 :(得分:1)
您可以禁用设备以连接到IoT中心。我只是使用正在主动发送数据的模拟设备(使用.NET SDK)进行了尝试。将开关转到“禁用”后,连接在几秒钟后断开。这是使用设备密钥,而不是证书,但我认为这可能也可以。
答案 1 :(得分:0)
Azure IoT中心中没有诸如REST API这样的设备可以断开连接的设备。但是,以下变通办法可以帮助解决问题:
基于MQTT设备协议,只有一个具有相同ID的设备可以连接到Azure IoT中心,因此连接同一设备(模拟相同的ID)将自动断开连接的设备。此解决方法不需要更改设备代码。您可以使用 MQTTBox , MQTT.fx 等工具进行测试。
此替代方法基于invoking a device method来从设备端执行关闭设备的操作。您可以为Azure IoT中心后台进程创建作业以“调用设备方法”。请注意,此解决方法需要将此功能内置到设备代码中。 另外,在设备端接收到的两个所需属性更改上使用通知事件,也可以用于解决与Azure IoT中心执行关闭或重新连接的解决方法。
编辑:
我确实建议在设备中内置一些重试策略,用于根据断开原因(例如连接丢失,用户断开连接等)将设备重新连接到Azure IoT中心。