【问题标题】:IOTC_CONNECTION_RESET_BY_PEER_ERROR in iot-device-sdk-embedded-ciot-device-sdk-embedded-c 中的 IOTC_CONNECTION_RESET_BY_PEER_ERROR
【发布时间】:2019-11-11 10:02:15
【问题描述】:

我正在使用 iot-device-sdk-embedded-c/examples/iot_core_mqtt_client 到 Google Cloud IoT Core 并将数据推送到它。

我在 ESP32 平台上使用这个 SDK。所以,我做了一些小的修改。但是一般代码看起来像下面链接中的代码:

https://github.com/Nilhcem/esp32-cloud-iot-core-k8s/blob/master/03-esp32_bme280_ciotc_esp-idf/main/main.c

有一段时间一切正常。但是最近,我收到了这个错误:IOTC_CONNECTION_RESET_BY_PEER_ERROR (https://googlecloudplatform.github.io/iot-device-sdk-embedded-c/api/html/d4/d7c/iotc__error_8h.html#a31af29ceaf88c8f978117b3be5545932)

当我启动应用程序时,连接成功。但在几分钟内,出现了这个错误,我的应用程序尝试重新连接。重新连接也成功,错误再次出现。在此之后,应用程序进入一个循环。

我想知道,在什么情况下,对等方会重置连接。另外,有什么办法可以防止对端重置连接?

我验证了 JWT 令牌是否已过期。它没有过期。我已将到期时间设置为 1 小时。但是这个错误会在几分钟内发生。

我也将保持活动超时时间增加到 60 分钟。 我也将连接超时时间增加到 60 分钟。

私钥应该还可以,因为连接仍然成功。

https://github.com/Nilhcem/esp32-cloud-iot-core-k8s/blob/master/03-esp32_bme280_ciotc_esp-idf/main/main.c

预期结果:应用程序应该连接并继续保持连接,直到 JWT 过期。

实际结果:应用程序成功连接到 IoT Core。几分钟后断开连接。再次重新连接并进入此循环。

【问题讨论】:

    标签: google-cloud-iot


    【解决方案1】:

    检查可能导致设备断开连接的几件事:

    • 是否正在使用相同的设备 ID 建立另一个连接?这可以是具有相同设备 ID 的另一台设备,也可以是来自同一设备的附加 MQTT 连接。
    • 您的设备是否使用了不正确的 QoS?我们目前仅支持 0 和 1。
    • 您的设备是否使用了错误的 MQTT 版本?我们仅支持 3.1.1
    • 您的设备发布的主题是否超过 64kb?我们将消息限制在此大小
    • 您的设备是否发布到正确的文件夹?如果您没有发布到 /devices/DEVICE_ID/events 或 /devices/DEVICE_ID/state 文件夹,则可以断开连接。
    • 您的设备是否正在侦听 /devices/DEVICE_ID/config 或 /devices/DEVICE_ID/commands/# 以外的文件夹?

    【讨论】:

      猜你喜欢
      • 2018-09-26
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 2018-06-07
      • 2016-05-07
      • 2020-07-24
      • 2018-09-09
      • 1970-01-01
      相关资源
      最近更新 更多