0

在单呼叫多应答模式中,您可以发送一个请求并接收多个对此请求的响应。一个 mqtt 客户端可以发送一个带有响应主题和一些相关数据的请求。一个客户端可以用多个响应来回答这个请求(每个响应都包括第一个也是唯一一个请求的相关数据),还是协议错误?

4

1 回答 1

1

MQTT是一种发布/订阅协议,与HTTP等请求/响应协议有很大不同。

经纪人是所有客户的中间人。它将发布的消息分发给订阅其主题的所有客户端。

所以你可以做的是让客户端“Master”发送到主题“REQUEST/”并让你的所有从属程序订阅该主题。如果他们收到一条消息,他们可以将他们的响应发布到 master 订阅的“RESPONSE/”。master 将为到达其先前订阅的主题的每条消息调用其 on_message 回调。

有关示例,请参阅您选择的实现的 github。这是eclipse-paho-python-github

编辑:

对于 MQTT5,添加了 response-topic-property。在这里,发布者/请求者可以传递有关在何处发布响应的信息,而不是将其编码到有效负载中,这是现在的方式。它似乎并没有真正改变工作流程。而不是响应者硬编码他们的主题或从有效负载中读取它,他们可以将其提取为他们收到的消息对象的一部分。

于 2019-07-24T10:48:42.727 回答