javascript - 如何获取 Paho 的最后 5 条消息?

标签 javascript html web mqtt paho

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

最佳答案

MQTT 不是这样工作的。

这里需要考虑很多因素。

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

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

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

关于javascript - 如何获取 Paho 的最后 5 条消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54125980/

相关文章:

javascript - jQuery 无法正常工作,可能与 Prototype 发生冲突?

javascript - 使用未选中的复选框,如何过滤掉始终隐藏的 NSFW 标记的 div,但选中打开时,以遵循可见性规则?

php - SQL语法错误 'LIMIT 0, 10'

html - 单击菜单栏时滚动页面视差?

Java Web应用开发套件推荐

javascript - Javascript 代码中的这个 If 条件有什么问题吗?

javascript - 重置表单模型值

javascript - 更改 dojo dijit 的文本

javascript - 如何在 JS 中平滑地舍入百分比

css - 调整浏览器窗口大小时如何增加页脚 div 的高度?