"Сообщение завещания", которое включает время сервера Mosquitto - PullRequest
0 голосов
/ 20 июня 2020

В MQTT "будут сообщения" могут храниться на сервере клиентом. Они публикуются сервером, когда тот же клиент внезапно отключается. Чтобы упростить отладку, имеет смысл включить дату и время в "будет сообщение" .

В настоящее время я использую библиотеку Paho MQTT и определяю "будет сообщение" вот так:

let _dt = {
    date: () => {
        let _d = new Date();
        let _dd = `${_d.toLocaleDateString("en-US")}`;
        return _dd;
    }, 
    time: () => {
        let _d = new Date();
        let _dd = `${_d.getHours()}:${_d.getMinutes()}:${_d.getSeconds()}.${_d.getMilliseconds()}`;
        return _dd;
    },
}

let _will_message = new Paho.MQTT.Message(`Client "${_client_id}" disconnected abruptly ${_dt.date()} at ${_dt.time()}.`);
_will_message.destinationName = `/will_messages`;
_will_message.retained = true;
_will_message.qos = 2;

Но это явно не правильный путь, потому что "will message" показывает время, в которое объект _will_message создается на клиенте!

Есть ли способ показать время, когда сервер Mosquito обнаружил отключение клиента или, что еще лучше, когда отключение действительно произошло (нам, вероятно, потребуется вычесть некоторое значение тайм-аута) ?

1 Ответ

1 голос
/ 20 июня 2020

Нет, сообщение LWT будет опубликовано без изменений по сравнению с тем, что было задано в момент создания.

Вы сможете найти, когда клиент отключен от журналов mosquitto.

например,

1592604090: Socket error on client mosq-Za0gqtsXkazB5N8Ugt, disconnecting.
1592604238: New connection from 127.0.0.1 on port 1889.
1592604238: New client connected from 127.0.0.1 as mosq-SrUz3EXOh9Bc6huMni (p2, c1, k10).
1592604264: Client mosq-SrUz3EXOh9Bc6huMni has exceeded timeout, disconnecting.
...