据我了解,在MQTT中,一旦客户端发布具有相应主题名称的内容,就会创建一个主题。 />

从这里开始。

发布后,客户可以订阅自己的主题吗?我在规格中找不到任何限制。它也未列为可能的异常行为:


5.4.8检测异常行为

服务器实现可能监视客户端行为以检测潜在的安全事件。例如:


重复的连接尝试
重复的身份验证尝试
连接异常终止
主题扫描(试图发送或订阅许多主题)
发送无法传递的消息(该主题没有订阅者)
连接但不发送数据的客户端




基于此,我认为肯定是可能。因此,我对该功能的用例有何兴趣?

为什么标准允许这种机制,要跟踪主题的所有者会很复杂?因此,它仅允许客户订阅自己的主题。

我可以想到的一个用例是,客户可以通过这种方式验证其发布的数据。

#1 楼

是的,可以订阅自己创建的主题。

MQTT客户端可以同时是发布者和订阅者。用MQTT术语来说,一个客户端同时包含subscriberspublishers。可能的用例(我假设)是,假设是否有三个客户端(x,y,z)订阅了x-topic创建的主题x。每当在x-topic上发布消息时,订阅该主题的每个人都会收到该消息。如果y将消息发布到主题x-topic(我想可以完成),则即使x即使创建了主题也没有订阅该主题,也不会收到该消息。因此,即使这是该主题的原始创建者,客户也需要订阅该主题才能接收消息。

评论


是的,这个选择让我无所适从。只是,我不确定新客户是否可以发布到其他发布者已经使用的现有主题。

– Bence Kaulics
16-12-12在9:52



是的,新客户可以发布到现有主题。请记住,客户不会直接交流,每个发布和订阅都是通过代理进行的。

–bravokeyl
16 Dec 12'在11:57

#2 楼

是的。

MQTT客户端连接到可以是云或其他设备的代理。

没有像创建主题这样的东西。它们用作消息的标题。因此,如果您的客户已经订阅了某个主题,并且如果该主题发布了该主题的内容,那么该消息将再次通过代理接收给客户端。用于基于云的代理的CloudMqtt

评论


这并不能真正扩大知识范围,超过一年前已经提供的其他答案。您可以自由添加新答案,甚至可以回答已回答的问题。但是,这些答案应提供有关问题或解决方案的更多或更新的见解。

– Helmar♦
18年5月28日在11:24