【问题标题】:Mqtt - Use QoS 1 when …Mqtt - 当……时使用 QoS 1
【发布时间】:2015-07-14 18:29:22
【问题描述】:

我正在学习非常好的教程 www.hivemq.com/mqtt-essentials-part-6-mqtt-quality-of-service-levels/ 但我不知道如何实现

当然,您的应用程序必须能够容忍重复和处理 相应地。

可以举个简单的例子吗?

例如现在我喜欢 (我在https://medium.com/@lelylan/how-to-build-an-high-availability-mqtt-cluster-for-the-internet-of-things-8011a06bd000 之后设置了我的部署)

module.exports.authorizePublish = function(client, topic, payload, callback) {
    var chunks = topic.split('/');
    if(chunks.length === 4) {
        Debug('AUTHORIZING SUBSCRIBE', client.device_id == chunks[1]);
        Debug('NICKNAME', chunks[1]);
        Debug('CHANNEL', chunks[3]);
        Debug('TOPIC', chunks[2]);
        Debug('PAYLOAD', payload.toString('utf8'));

        var data = {
            deviceNickname:chunks[1],
            channel:chunks[3],
            topic:chunks[2],
            payload:payload.toString('utf8')
        };
        Message.insert(data, function (err, message) {
                if (err){
                    Debug(err);
                    return;
                }
                Debug(message);
        });
    }
    callback(null, client.device_id === chunks[1]);
}

【问题讨论】:

    标签: node.js mqtt


    【解决方案1】:

    我仍然是 MQTT 的学习者而不是专家,但我对使用 QoS 1 处理重复消息的理解如下:

    假设您有一个应用程序,无论出于何种原因,它都需要对从代理接收到的消息进行计数。但是,您不想考虑重复的消息(当您的客户端未及时确认消息时发送)。

    我使用 Java Paho 客户端,所以它的代码是:

    int counter = 0;
    public void messageArrived(String topic, MqttMessage message) throws MqttException {
       if (message.isDuplicate() == false) {
          counter++;
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-13
      • 1970-01-01
      • 2015-10-03
      • 2017-10-15
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      相关资源
      最近更新 更多