是否有任何方法可以通过mosca MQTT来实现请求-响应模式,以“检查来自客户端的答复,如果我没有在预期的时间内收到预期的答复,则重新发布”。
我相信这在Mqtt 5中是可行的,但是到目前为止,我必须使用QoS 1(直到Mqtt 3.1.1才支持的Mosca代理)
我正在寻找Node js解决方法来实现这一目标。
根据我的评论,您可以对任何MQTT代理实施请求-响应模式,但是在v5之前,您需要自己实现(具有单个答复主题和消息ID,或者包括特定的答复-到每个消息中的主题)。
因为MQTT 3.11本身不直接提供此功能,并且MQTT有效负载没有标准格式(仅一些字节!),所以无法提出通用实现(请求中需要某种唯一的ID) )。在MQTT v5中,通过包含properties和Response Topic的功能可以解决此问题。对于较早的版本,您必须添加一些额外的信息到有效负载中(使用您选择的任何编码机制)。
有一些堆栈溢出问题可能会提供一些见解:
其他文章:
$aws/things/thingName/shadow/get
或/get/accepted
上响应]。]]这里有一些节点程序包(注意:这些程序包已经有一段时间没有更新了,我也没有审查代码):
/get/rejected
即使使用MQTT v5,您也需要自己实现空闲超时位。如果您使用的是QOS 1/2,则代理将负责重新发送消息(直到收到PUBACK / PUBCOMP消息),因此重新发送消息可能适得其反(当comms链接关闭时,许多相同的消息排队)]
我完成的工作流程摘要