在node.js上清除MQTT会话

时间:2018-12-05 05:37:54

标签: mqtt

我在node.js上使用此代码,而我的mqtt服务器是cloudmqtt。

mqtt脚本结果有问题。

我必须编写clientid并单击“清除会话”按钮。

如果我不这样做,消息将不会互相到达。

我尝试在npm软件包上找到“ mqtt”,但找不到能清除会话的内容。

您能教我如何发送消息吗?

******写入结果*****

λ节点test_cloudmqtt.js mqtt2已连接 mqtt1触发器称为0 mqtt1触发器称为1 mqtt1触发器称为2 mqtt1触发器称为3 mqtt1触发器称为4 mqtt1触发了5 mqtt1触发了6 mqtt1触发调用7 mqtt1触发器称为8 mqtt1触发器称为9 mqtt1已连接0 mqtt1已连接1 mqtt1已连接2 mqtt1已连接3 mqtt1已连接4 mqtt1已连接5 mqtt1已连接6 mqtt1已连接7 mqtt1已连接8 mqtt1已连接9 MSG:您好mqtt0 MSG:您好mqtt1 MSG:您好mqtt2 MSG:您好mqtt3 MSG:您好mqtt4 味精:你好mqtt5 味精:你好mqtt6 味精:你好mqtt7 味精:你好mqtt8 MSG:您好mqtt9

    var client1  = mqtt.connect(cloudmqtt.mqttHost, {
    port: cloudmqtt.MQTTPORT,
    username: cloudmqtt.mqttMasterId,
    password: cloudmqtt.mqttMasterPw});

function testmqtt(param) {
    console.log("mqtt1 trigger called"  + param.toString());

    client1.on('connect', function () {
        client1.publish('/kym_test', 'Hello mqtt' + param.toString());
        console.log("mqtt1 connected"  + param.toString());

        /*client1.end(function () {
            console.log("mqtt1 disconnect");
        });*/
    });

    client1.on('error', function () {
        console.log("mqtt1 error");
    });
}

var client2  = mqtt.connect(cloudmqtt.mqttHost, {
    port: cloudmqtt.MQTTPORT,
    username: 'kym2',
    password: 'xxxx'});

client2.on('connect', function () {
    console.log("mqtt2 connected");
    client2.subscribe('/kym_test');
});


client2.on('message', function (topic, message) {
    console.log("MSG : " + message.toString());
});


for(var a=0; a < 10; a++) {
    setTimeout(testmqtt, 1000, a);  //
}

1 个答案:

答案 0 :(得分:0)

从npm上的mqtt.js docs

  
      
  • protocolId:“ MQTT”
  •   
  • protocolVersion:4
  •   
  • clean:true,设置为false以在脱机时接收QoS 1和2消息
  •   
  • reconnectPeriod:1000毫秒,两次重新连接之间的间隔
  •   
  • connectTimeout:30 * 1000毫秒,等待收到CONNACK的时间
  •   
  • 用户名:您的经纪人所需的用户名(如果有)
  •   
var client1  = mqtt.connect(cloudmqtt.mqttHost, {
    clean: false,
    port: cloudmqtt.MQTTPORT,
    username: cloudmqtt.mqttMasterId,
    password: cloudmqtt.mqttMasterPw});