我正在尝试将我的 NodeJS 客户端连接到 aws mqtt 代理。 在下面的客户端代码中,我收到“connected true”作为响应,但无法发布数据。
var mqtt = require('mqtt');
var KEY = fs.readFileSync('xx.key');
var CERT = fs.readFileSync('xx.pem.crt');
var options=
{
clientId:"js111",
rejectUnauthorized : false,
key: KEY,
cert: CERT,
}
var client = mqtt.connect("mqtts://xx.amazonaws.com:8883",options);
client.on('error', function (err) {
console.log(err);
});
client.on("connect",function(){
console.log("connected "+ client.connected);
client.publish('test1', "This is test msg", {qos: 2}, (err) => {
if (err) console.log('error occur: ', err);
else console.log('message successfully publish');
});
})
答案 0 :(得分:0)
您正在通过{qos: 2}
发布您的消息;这是not supported by AWS IoT:
AWS IoT 和 AWS IoT 设备开发工具包支持 MQTT 服务质量 (QoS) 级别 0 和 1。MQTT 协议定义了第三级 QoS,级别 2,但 AWS IoT 不支持它。
注意:由于您没有在问题中提供太多细节(错误消息等),这可能不是完整的问题(但尝试发布 QOS2 消息会导致您的连接中断)。