我使用 Paho 创建 Javascript MQTT Web 应用程序。 客户端只收到最近发送给它的最后一条消息,但每次打开/刷新网页时我都需要最后五条消息。 为此目的有什么解决方案吗?
最佳答案
MQTT 不是这样工作的。
这里需要考虑很多因素。
保留消息。听起来您收到的消息在 header 集中有保留位。这意味着代理将保留在其发布的任何主题上设置了该位的最后一条消息,然后当客户端订阅该主题时,它始终会在任何新消息到达之前将最后一条消息传递给客户端。这只是一条消息,无法发送更多消息。
消息队列。如果客户端以大于 QOS 0 订阅主题然后断开连接。当它重新连接时,只要 clean_session 标志设置为 false,并且客户端重新订阅同一主题,那么代理将传递客户端离线时发送到该主题的任何消息。同样,这将是所有错过的消息,而不仅仅是最后 5 条消息。
正如 @Weedoze 在他们的评论中提到的,一种可能的解决方案是让另一个客户端订阅同一主题,并且每次发布消息时都使用它来更新保存最后 5 条消息的单个消息,然后需要将其发布到单独的主题,并将保留位设置为 true。然后,客户端可以订阅“历史”主题和“实时”主题。
关于javascript - 如何获取 Paho 的最后 5 条消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54125980/