我正在运行一个永久脚本,将数据从raspberry pi 3发送到azure-iot-hub,使用以下命令,root@raspberrypi3:~#永久启动/home/pi/azure/iam/ble_azure.js
在工作了大约1.5天后,我停止了在auzre-iot-hub上收到消息,当我检查永久列表时,我得到了以下信息:
root@raspberrypi3:~# forever list
info: Forever processes running
data: uid command script forever pid id logfile uptime
data: [0] NWgI /usr/bin/nodejs /home/pi/azure/iam/ble_azure.js 8990 3784 /root/.forever/NWgI.log 0:21:17:38.742 当我检查日志文件时,我得到了这个错误消息:
/home/pi/azure/iam/node_modules/applicationinsights/AutoCollection/Exceptions.js:27
throw error;
^
NotConnectedError: mqtt.js returned client disconnecting error
at translateError (/home/pi/azure/iam/node_modules/azure-iot-device-mqtt/lib/mqtt-translate-error.js:25:11)
at MqttTwinReceiver._handleError (/home/pi/azure/iam/node_modules/azure-iot-device-mqtt/lib/mqtt-twin-receiver.js:201:42)
at /home/pi/azure/iam/node_modules/azure-iot-device-mqtt/lib/mqtt-twin-receiver.js:64:18
at MqttClient._checkDisconnecting (/home/pi/azure/iam/node_modules/mqtt/lib/client.js:314:7)
at MqttClient.subscribe (/home/pi/azure/iam/node_modules/mqtt/lib/client.js:423:12)
at /home/pi/azure/iam/node_modules/azure-iot-device-mqtt/lib/mqtt-twin-receiver.js:62:22
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickCallback (internal/process/next_tick.js:104:9)
error: Forever detected script exited with code: 7
error: Script restart attempt #34
state has changed poweredOn
started scanning
[IoT hub Client] Connect error: mqtt.js returned premature close error通过日志文件,mqtt错误不断发生多次,并永远成功地处理了它,我不明白为什么在1.5天后,我得到了这个错误:
**error: Forever detected script exited with code: 7
error: Script restart attempt #34**还有为什么我一直收到这样的mqtt错误,为什么它总是断开连接?
**NotConnectedError: mqtt.js returned client disconnecting error**
Forever --version
v0.15.3
root@raspberrypi3:~# uname -a
Linux raspberrypi3 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux谢谢
发布于 2017-10-25 03:14:35
如果您正在使用Client.fromConnectionString实例化客户端对象,则SDK每隔45分钟断开一次连接并重新连接,以更新共享访问签名令牌。(使用不同身份验证机制的AMQP不会发生这种情况)。这可能是因为在重新建立连接时,客户端遇到了我们一直在跟踪in this issue的“过早关闭”错误。
有两件事可以帮助限制与断开/重新连接相关的潜在错误:
Client.fromSharedAccessSignature,并构建一个长期的签名,它不需要经常断开连接和重新连接。最后但并非最不重要的一点是,SDK的下一个版本(1.2.0)将包含一个重试/重新连接逻辑,它将比以前更加健壮。我会更新这个问题,以便在它发布时指出它。
https://stackoverflow.com/questions/46911077
复制相似问题