【问题标题】:Mosquitto should not store and send offline messagesMosquitto 不应该存储和发送离线消息
【发布时间】:2018-02-01 18:34:49
【问题描述】:

我试图不接收离线消息我的情况是如果客户端 1 处于离线状态并且客户端 2 正在发送消息,因此客户端 1 在重新连接时不应该收到任何旧消息,并且他应该接收重新连接后发送的消息。我在客户端和 mosquitto 服务器上使用 mqtt 库(npm)。我试过{clean:true} 并使用{qos:0} 发布和订阅,但它不起作用。这是我的代码

客户端2:

 this.client = mqtt.connect(url, {
  clean: true
}
this.client.publish("mqtt/location", JSON.stringify(data1) ,{qos: 0});

客户 1:

this.client = mqtt.connect(url, {
      clean: true
}
this.client.subscribe("mqtt/location", {qos: 0});
this.client.on("message", function(topic, payload) {
console.log(payload);
})

谢谢

【问题讨论】:

    标签: mqtt mosquitto


    【解决方案1】:

    如果您将 clean session 设置为 true,那么唯一的其他解释是您收到的消息是在设置了保留位的情况下发布的。您无法阻止客户接收这些消息,但您可以检测到它们。您从设置了保留位的代理收到的任何已发布消息都是“旧的”。

    【讨论】:

    • 谢谢你的回答我会试试这个。
    • 我每次收到消息都测试一下retain is false。
    • 您需要清除所有旧的保留消息。最简单的方法是停止 mosquitto 并删除它的持久性文件
    猜你喜欢
    • 2017-03-16
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 2015-06-02
    相关资源
    最近更新 更多