如何获取 Paho 的最后 5 条消息?
How to get the last five messages in Paho?
我使用 Paho 创建 Javascript MQTT Web 应用程序。
客户端只收到最近发送给它的最后一条消息,但我每次 open/refresh 网页时都需要最后五条消息。
有没有为此目的的解决方案?
MQTT 不是这样工作的。
这里有很多因素需要考虑。
保留消息。听起来您收到的消息在 headers 集中有保留位。这意味着代理将挂起在其发布的任何主题上设置该位的最后一条消息,然后当客户端订阅该主题时,它将始终在任何新消息到达之前将最后一条消息传递给客户端。这只是一条消息,没有更多消息。
消息队列。如果客户端以大于 QOS 0 订阅主题然后断开连接。当它重新连接时,只要 clean_session 标志设置为 false 并且客户端重新订阅相同的主题,那么代理将传递在客户端离线时发送到该主题的任何消息。同样,这将是所有错过的消息,而不仅仅是最后 5 条。
正如@Weedoze 在他们的评论中提到的,一种可能的解决方案是让另一个客户端订阅相同的主题,并且每次发布消息时使用它来更新包含最后 5 条消息的单个消息,这需要然后将保留位设置为 true 发布到单独的主题。然后客户端可以订阅 "history" 主题和 "live" 主题。
我使用 Paho 创建 Javascript MQTT Web 应用程序。 客户端只收到最近发送给它的最后一条消息,但我每次 open/refresh 网页时都需要最后五条消息。 有没有为此目的的解决方案?
MQTT 不是这样工作的。
这里有很多因素需要考虑。
保留消息。听起来您收到的消息在 headers 集中有保留位。这意味着代理将挂起在其发布的任何主题上设置该位的最后一条消息,然后当客户端订阅该主题时,它将始终在任何新消息到达之前将最后一条消息传递给客户端。这只是一条消息,没有更多消息。
消息队列。如果客户端以大于 QOS 0 订阅主题然后断开连接。当它重新连接时,只要 clean_session 标志设置为 false 并且客户端重新订阅相同的主题,那么代理将传递在客户端离线时发送到该主题的任何消息。同样,这将是所有错过的消息,而不仅仅是最后 5 条。
正如@Weedoze 在他们的评论中提到的,一种可能的解决方案是让另一个客户端订阅相同的主题,并且每次发布消息时使用它来更新包含最后 5 条消息的单个消息,这需要然后将保留位设置为 true 发布到单独的主题。然后客户端可以订阅 "history" 主题和 "live" 主题。