gpt4 book ai didi

mqtt - 如何知道持久性 MQTT session 是否仍然可用?

转载 作者:行者123 更新时间:2023-12-02 04:29:03 27 4
gpt4 key购买 nike

这是一个关于 MQTT 协议(protocol)和使用 MQTT 客户端的一般性问题。特别是我使用 mosquitto 作为服务器,使用 ruby​​-mqtt 作为客户端。

MQTT 提供了持久 session 的概念,这意味着当客户端断开连接时,以前的订阅会保留并且 qos > 0 的消息会排队。这意味着对于我的客户端实现,我可以在连接到代理后跳过订阅,第一次除外。

问题是:我如何确定我的订阅还在?我想可能会出现这样一种情况,即启动的新服务器没有关于我以前的 session 的信息,因此也没有我的订阅。

最佳答案

与我的共同回答者相矛盾的是,MQTT v3.1.1 为代理提供了一种机制,可以告诉正在重新连接的客户端 session 已恢复。这是在 CONNACK 消息中提供的“ session 存在”标志。

自称支持 MQTT v3.1.1 的客户/经纪人应该支持此标志。例如,Paho 1.0 客户端应该都这样做(Python 客户端肯定会这样做),即将发布的 1.4 版本的 mosquitto 在其现有的 MQTT v3.1.1 支持中增加了对该标志的支持。

还值得注意的是,由于 MQTT v3.1.1 要求在每个 SUBSCRIBE 上传输保留的消息,无论之前是否存在订阅,这 是一个有用的功能。

关于mqtt - 如何知道持久性 MQTT session 是否仍然可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24628282/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com