从这里开始。
发布后,客户可以订阅自己的主题吗?我在规格中找不到任何限制。它也未列为可能的异常行为:
5.4.8检测异常行为
服务器实现可能监视客户端行为以检测潜在的安全事件。例如:
重复的连接尝试
重复的身份验证尝试
连接异常终止
主题扫描(试图发送或订阅许多主题)
发送无法传递的消息(该主题没有订阅者)
连接但不发送数据的客户端
基于此,我认为肯定是可能。因此,我对该功能的用例有何兴趣?
为什么标准允许这种机制,要跟踪主题的所有者会很复杂?因此,它仅允许客户订阅自己的主题。
我可以想到的一个用例是,客户可以通过这种方式验证其发布的数据。
#1 楼
是的,可以订阅自己创建的主题。MQTT客户端可以同时是发布者和订阅者。用MQTT术语来说,一个客户端同时包含
subscribers
和publishers
。可能的用例(我假设)是,假设是否有三个客户端(x,y,z)订阅了x-topic
创建的主题x
。每当在x-topic
上发布消息时,订阅该主题的每个人都会收到该消息。如果y
将消息发布到主题x-topic
(我想可以完成),则即使x
即使创建了主题也没有订阅该主题,也不会收到该消息。因此,即使这是该主题的原始创建者,客户也需要订阅该主题才能接收消息。#2 楼
是的。MQTT客户端连接到可以是云或其他设备的代理。
没有像创建主题这样的东西。它们用作消息的标题。因此,如果您的客户已经订阅了某个主题,并且如果该主题发布了该主题的内容,那么该消息将再次通过代理接收给客户端。用于基于云的代理的CloudMqtt
评论
这并不能真正扩大知识范围,超过一年前已经提供的其他答案。您可以自由添加新答案,甚至可以回答已回答的问题。但是,这些答案应提供有关问题或解决方案的更多或更新的见解。
– Helmar♦
18年5月28日在11:24
评论
是的,这个选择让我无所适从。只是,我不确定新客户是否可以发布到其他发布者已经使用的现有主题。
– Bence Kaulics
16-12-12在9:52
是的,新客户可以发布到现有主题。请记住,客户不会直接交流,每个发布和订阅都是通过代理进行的。
–bravokeyl
16 Dec 12'在11:57