无法在 aws mqtt 代理上发布数据,在下面的代码中获得连接状态“真”后,它在发布时卡住了

时间:2021-05-18 17:59:54

标签: amazon-web-services mqtt publish

我正在尝试将我的 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');
        });

})

1 个答案:

答案 0 :(得分:0)

您正在通过{qos: 2}发布您的消息;这是not supported by AWS IoT

<块引用>

AWS IoT 和 AWS IoT 设备开发工具包支持 MQTT 服务质量 (QoS) 级别 0 和 1。MQTT 协议定义了第三级 QoS,级别 2,但 AWS IoT 不支持它。

注意:由于您没有在问题中提供太多细节(错误消息等),这可能不是完整的问题(但尝试发布 QOS2 消息会导致您的连接中断)。

相关问题