Azure Iot Hub:撤消设备会话

时间:2019-02-18 07:52:42

标签: azure iot azure-iot-hub

我目前正在寻找一种方法来撤销连接到Azure Iot Hub的设备的设备会话。

例如,当设备使用证书进行连接并且证书过期时,该设备仍然可以在具有有效令牌的情况下发送和接收数据。

我们的案例是,如果设备由于任何原因使我们的Io​​T中心过载,我们希望能够立即取消连接。 我们希望能够撤销此类令牌,​​以便立即断开特定设备的连接。

是否有可能这样做?如果没有,是否有解决方法?

2 个答案:

答案 0 :(得分:1)

您可以禁用设备以连接到IoT中心。我只是使用正在主动发送数据的模拟设备(使用.NET SDK)进行了尝试。将开关转到“禁用”后,连接在几秒钟后断开。这是使用设备密钥,而不是证书,但我认为这可能也可以。

enter image description here

答案 1 :(得分:0)

Azure IoT中心中没有诸如REST API这样的设备可以断开连接的设备。但是,以下变通办法可以帮助解决问题:

  1. 基于MQTT设备协议,只有一个具有相同ID的设备可以连接到Azure IoT中心,因此连接同一设备(模拟相同的ID)将自动断开连接的设备。此解决方法不需要更改设备代码。您可以使用 MQTTBox MQTT.fx 等工具进行测试。

  2. 此替代方法基于invoking a device method来从设备端执行关闭设备的操作。您可以为Azure IoT中心后台进程创建作业以“调用设备方法”。请注意,此解决方法需要将此功能内置到设备代码中。 另外,在设备端接收到的两个所需属性更改上使用通知事件,也可以用于解决与Azure IoT中心执行关闭或重新连接的解决方法。

编辑:

  1. 就像@silent一样,将状态“启用”更改为“禁用”,设备将自动从Azure IoT中心断开连接。您可以使用REST API更改此状态。

我确实建议在设备中内置一些重试策略,用于根据断开原因(例如连接丢失,用户断开连接等)将设备重新连接到Azure IoT中心。