Чистая сессия MQTT на node.js - PullRequest
0 голосов
/ 05 декабря 2018

Я использую этот код в файле node.js, а мой mqtt-сервер - cloudmqtt.

В результате выполнения скрипта mqtt возникла проблема.

Я должен написать clientid и нажать «Очистить сессию»button.

Если я этого не сделал, сообщения не могут приходить друг к другу.

Я пытаюсь найти mqtt для пакетов npm, но я не могу найти что-то, что можеточистить сеансы.

Можете ли вы научить меня, как можно отправить сообщение?

****** результат записи *****

λ узел test_cloudmqtt.js mqtt2 подключенТриггер mqtt1 с именем 0 триггер mqtt1 с именем1 триггер mqtt1 с именем2 триггер mqtt1 с именем триггера 3 mqtt1 с именем триггера 5 Триггер mqtt1 с вызовом триггера mqtt1 с именем7 триггер 1 mqtt1 с именем 9 mqtt1 подключенный0 mqtt1 подключенный 1 mqtt1 связанный mqtt1 подключенный mqt1 подключен mq связанный 1 mqt1 подключенMSG: Привет mqtt0 MSG: Привет mqtt1 MSG: Привет mqtt2 MSG: Привет mqtt3 MSG: Привет mqtt4 MSG: Привет mqtt5 MSG: Онllo mqtt6 MSG: привет mqtt7 MSG: привет 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 голосов
/ 05 декабря 2018

Из mqtt.js документов по npm

  • 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});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...