无法在 aws mqtt 代理上发布数据,在下面的代码中获得连接状态 'true' 后,它会卡在发布处

Not able to publish data on aws mqtt broker, its getting stuck at publish after getting connected status 'true' in below code

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

})

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

AWS IoT and the AWS IoT Device SDKs support the MQTT Quality of Service (QoS) levels 0 and 1. The MQTT protocol defines a third level of QoS, level 2, but AWS IoT does not support it.

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