【问题标题】:MQTT know if a client is subscribed (cont)MQTT 知道客户端是否被订阅(续)
【发布时间】:2016-08-12 16:16:15
【问题描述】:

今天我发布了这个主题 MQTT know if a client is subscribed

我想尝试一下,但我想知道是否可行,可能是我把事情复杂化了,所以如果你有其他建议,请随时

假设我们有主题温度/订阅

第一

客户 A 订阅 subscription(或换句话说 温度/订阅) 如果他没有收到有效载荷(保留消息)

然后

客户端 A 以 1“在线” 的有效负载作为保留消息发布到 订阅

并订阅温度主题

现在,客户 B

再次,订阅 subscription 如果他收到有效负载 = 有人已经订阅(客户端 A) 所以,他不能订阅温度主题

我仍然需要添加 LWT 消息,但首先我想从简单的开始。

这样做可行吗?所以我通过这种方式可以查看是否有人订阅了某个主题

【问题讨论】:

    标签: mqtt


    【解决方案1】:

    正如我们上次讨论的那样,这将起作用,但在检查 temperature/subscription 上的消息和向其发布消息以声明订阅之间存在巨大的间隔时间窗口。

    您还需要使用客户端 ID 作为标记,因为保留的消息将在代理重新启动后仍然存在,这将断开所有客户端,因此客户端 A 不会知道在代理重新启动后它仍然持有“锁定”。

    LWT 仅用于客户端 A 崩溃,然后它会在发送消息之前等待连接过期的 TTL,如果客户端 A 完全断开连接,您需要明确清除该主题。

    总而言之,这是一个非常糟糕的主意,试图改造一个 MQTT 不适合的概念。

    【讨论】:

    • 明白..再次感谢您,hardillb,问题是我需要找到一些方法来做到这一点,或者至少限制一个频道的订阅,只能订阅一个:/跨度>
    • 插件MQTT消息日志怎么样?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    相关资源
    最近更新 更多