我们使用 azure-iot-device-mqtt
node包将debian计算机连接到Azure IOT Hub . 我们注意到当互联网掉线时(即我们断开它) Device Explorer
认为设备仍然连接(大约10秒),并且在此期间被触发的消息不会到达设备(或排队) . 10秒后,它们出现在设备资源管理器队列中 . 此外,设备仍然认为它已连接且无法恢复连接 .
我们已经尝试过软件包版本1.1.17和1.2.1,并且两者都有相同的症状 .
var clientFromConnectionString = require('azure-iot-device-mqtt').clientFromConnectionString;
var Message = require('azure-iot-device').Message;
var connectionString = 'xxx';
var client = clientFromConnectionString(connectionString);
var connectCallback = function (err) {
if (err) {
console.error('Could not connect: ' + err);
} else {
console.log('Client connected');
var message = new Message('some data from my device');
client.sendEvent(message, function (err) {
if (err) console.log(err.toString());
});
client.on('message', function (msg) {
console.log(msg);
client.complete(msg, function () {
console.log('completed');
});
});
client.on('disconnect', function () {
console.log("disconnect");
});
}
};
client.open(connectCallback);
N.b我们需要MQTT,因为我们正在使用直接方法功能 .
在任何断开连接时,使用AMQP包,来自 Cloud 的消息立即进入队列 .
问题摘要:
-
MQTT消息在断开连接的前10-15秒内丢失(此后它们排队 Cloud 端) .
-
MQTT AMQP客户端未检测到断开连接 .
任何建议将不胜感激 .
谢谢,大卫