MQTT知道客户是否订阅(续)

时间:2016-08-12 16:16:16

标签: mqtt

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

我想尝试一下,但我想知道是否可行,可能是我的事情变得复杂,所以如果你有其他建议请随意

我们假设我们的主题是温度/订阅

第一

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

然后

客户A发布订阅,有效负载为 1 “online”作为保留消息

并订阅温度主题

现在,客户B

再次订阅订阅,如果他收到有效负载=有人已订阅(客户A) 因此,他无法订阅温度主题

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

这样做是否可行?所以我这样就可以看出是否有人订阅了主题

1 个答案:

答案 0 :(得分:0)

正如我们上次讨论的那样,这会有效,但是在temperature/subscription上检查邮件和向其发布邮件以声明订阅之间有一个巨大的时间窗口。

此外,您需要使用客户端ID作为标记,因为保留的消息将在代理重新启动后继续存在,这将断开所有客户端,因此客户端A不知道它仍然保持"锁定&# 34;经纪人重启后。

LWT仅用于客户端A崩溃,然后它将等待连接的TTL在发送消息之前到期,如果客户端A干净地断开连接,则需要明确地清除该主题。

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