今天我发布了这个话题 MQTT know if a client is subscribed
我想尝试一下,但我想知道是否可行,可能是我的事情变得复杂,所以如果你有其他建议请随意
我们假设我们的主题是温度/订阅
第一
客户A订阅订阅(或换句话说温度/订阅) 如果他没有收到有效载荷(保留信息)
然后
客户A发布订阅,有效负载为 1 或“online”作为保留消息
并订阅温度主题
现在,客户B
再次订阅订阅,如果他收到有效负载=有人已订阅(客户A) 因此,他无法订阅温度主题
我仍然需要添加LWT消息,但首先我想从简单的事情开始。
这样做是否可行?所以我这样就可以看出是否有人订阅了主题
答案 0 :(得分:0)
正如我们上次讨论的那样,这会有效,但是在temperature/subscription
上检查邮件和向其发布邮件以声明订阅之间有一个巨大的时间窗口。
此外,您需要使用客户端ID作为标记,因为保留的消息将在代理重新启动后继续存在,这将断开所有客户端,因此客户端A不知道它仍然保持"锁定&# 34;经纪人重启后。
LWT仅用于客户端A崩溃,然后它将等待连接的TTL在发送消息之前到期,如果客户端A干净地断开连接,则需要明确地清除该主题。
总之,这是一个非常糟糕的主意,试图改造适合MQTT不适合的概念。