【发布时间】:2019-07-24 10:40:31
【问题描述】:
在单呼叫多应答模式中,您可以发送一个请求并收到多个对此请求的响应。一个 mqtt 客户端可以发送一个带有响应主题和一些相关数据的请求。一个客户端可以用多个响应来回答这个请求(每个响应都包括第一个也是唯一一个请求的相关数据),还是协议错误?
【问题讨论】:
标签: mqtt request-response
在单呼叫多应答模式中,您可以发送一个请求并收到多个对此请求的响应。一个 mqtt 客户端可以发送一个带有响应主题和一些相关数据的请求。一个客户端可以用多个响应来回答这个请求(每个响应都包括第一个也是唯一一个请求的相关数据),还是协议错误?
【问题讨论】:
标签: mqtt request-response
MQTT 是一个Publish/Subscribe protocol,与requenst/response protocols 非常不同,比如HTTP。
经纪人是所有客户的中间人。它将发布的消息分发给订阅其主题的所有客户端。
所以你可以做的是让客户端“Master”发送到主题“REQUEST/”并让你的所有从属程序订阅该主题。如果他们收到一条消息,他们可以将他们的响应发布到 master 订阅的“RESPONSE/”。主节点将为到达其先前订阅的主题的每条消息调用其 on_message 回调。
有关示例,请参阅您选择的实现的 github。这是eclipse-paho-python-github。
编辑:
对于 MQTT5,添加了 response-topic-property。在这里,发布者/请求者可以传递有关在何处发布响应的信息,而不是将其编码到有效负载中,这是现在的方式。它似乎并没有真正改变工作流程。而不是响应者硬编码他们的主题或从负载中读取它,他们可以将其提取为他们收到的消息对象的一部分。
【讨论】: