我们有设备通过 MQTT 连接到IoT 中心(默认设置),并且它们都每65 分钟(精确到毫秒)精确地重新连接一次。
设备应用详细信息:
- .net 核心 2.1
- 图书馆:
Microsoft.Azure.Devices v1.17.0
Microsoft.Azure.Devices.Client v1.18.0
- 连接类型:MQTT
- 操作系统:Windows 10 IoT Enterprise(戴尔工业 PC)、Raspbian (Raspberry PI 3) 和 Windows IoT Core (Raspberry PI 3) - 全部行为相同。
我们正在使用IoT 中心的免费版本/层。
重连发生时:
DeviceClient StatusChangesHandler
报告 ConnectionStatus:Disconnected_Retrying
和原因:No_Network
- IoT 中心诊断报告
deviceDisconnect
=>404104 DeviceConnectionClosedRemotely
deviceConnect
=>401003 IoTHubUnauthorized
deviceConnect
=> 没有错误,成功
DeviceClient StatusChangesHandler
报告 ConnectionStatus:Connected
和原因:Connection_Ok
这对于我们的运营来说并不是一个非常关键的问题,因为在现阶段它是一个 PoC,每次重新连接大约需要 2 秒,但是,我们希望在上线之前了解此行为的根本原因。
最佳答案
您是否使用 SAS token 通过 IoT 中心进行身份验证?如果是这样,您很可能在刷新 token 时遇到断开连接。这是由 SDK 处理的,在这种情况下,SDK 使用重试策略来重新连接。如果未明确设置重试策略,则它将使用默认值(超时 4 分钟的指数退避)。如果您将默认设置为不重试,则无法在没有干扰的情况下重新建立连接。
关于azure - 设备每 65 分钟重新连接到 Azure IoT 中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52041271/