【问题标题】:How to get the last five messages in Paho?如何在 Paho 中获取最后五条消息?
【发布时间】:2019-01-10 09:52:25
【问题描述】:

我使用 Paho 创建 Javascript MQTT Web 应用程序。 客户端只收到最近发送给它的最后一条消息,但每次打开/刷新网页时我都需要最后五条消息。 有没有为此目的的解决方案?

【问题讨论】:

  • MQTT 未发送最新消息。唯一的选择是激活代理上的保留消息。这意味着当你通过客户端连接它并订阅主题时,它会自动发送保留的消息。 MQTT 不是用来发送历史数据的。一个选项是添加一个脚本,该脚本将订阅一个主题并保存最新的 5 条消息。将这些消息压缩为一条大消息并将其设置为保留

标签: javascript html web mqtt paho


【解决方案1】:

MQTT 不能这样工作。

这里需要涵盖许多因素。

  1. 保留的消息。听起来您收到的消息在标头集中保留了位。这意味着代理将挂起在其发布的任何主题上设置该位的最后一条消息,然后当客户端订阅该主题时,它将始终在任何新消息到达之前将最后一条消息传递给客户端。这只是一条消息,没有办法拥有更多。

  2. 消息队列。如果客户端订阅了大于 QOS 0 的主题,然后断开连接。当它重新连接时,只要 clean_session 标志设置为 false 并且客户端重新订阅相同的主题,那么代理将传递在客户端离线时发送到该主题的任何消息。同样,这将是所有错过的消息,而不仅仅是最后 5 条。

正如@Weedoze 在他们的评论中提到的那样,一种可能的解决方案是让另一个客户端订阅相同的主题,并且每次发布消息时都使用它来更新包含最后 5 条消息的单个消息,这需要然后是发布到保留位设置为 true 的单独主题。然后客户端可以订阅“历史”主题和“实时”主题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 2021-01-19
    • 2017-05-24
    • 2016-10-12
    相关资源
    最近更新 更多