在“单次呼叫多人应答模式”中,您可以发送请求并收到对该请求的多个响应。 mqtt客户端可以发送带有响应主题和一些相关数据的请求。一个客户可以用一个以上的响应(每个响应都包含第一个也是唯一的请求的相关数据)来响应该请求吗?或者这是协议错误吗?
答案 0 :(得分:1)
MQTT是Publish/Subscribe protocol,与requenst/response protocols(例如HTTP)大不相同。
经纪人是所有客户的中间人。它将发布的消息分发给所有订阅该主题的客户端。
因此,您可以做的是将客户端“ Master”发送到主题“ REQUEST /”,并使所有从属程序都订阅该主题。如果他们收到一条消息,则可以将其响应发布到主机已订阅的“ RESPONSE /”。主机将针对到达其先前已订阅主题的每条消息调用其on_message回调。
有关示例,请参见您选择的实现的github。这是eclipse-paho-python-github。
编辑:
对于MQTT5,添加了响应主题属性。在这里,发布者/请求者可以传递关于在哪里发布响应的信息,而不是在有效负载中进行编码,这是现在的方式。它看起来并没有真正改变工作流程。他们可以将其提取为接收到的消息对象的一部分,而不是响应者对其主题进行硬编码或从有效载荷中读取主题。