有没有办法用 mosca MQTT 实现请求-响应模式来“检查来自客户端的回复,如果我在预期时间内没有收到预期的回复,则重新发布”。
我相信这在 Mqtt 5 中是可能的,但到目前为止,我必须使用具有 QoS 1 的 Mosca 代理(支持到 Mqtt 3.1.1)
我正在寻找一种 Node js 解决方法来实现这一点。
有没有办法用 mosca MQTT 实现请求-响应模式来“检查来自客户端的回复,如果我在预期时间内没有收到预期的回复,则重新发布”。
我相信这在 Mqtt 5 中是可能的,但到目前为止,我必须使用具有 QoS 1 的 Mosca 代理(支持到 Mqtt 3.1.1)
我正在寻找一种 Node js 解决方法来实现这一点。
根据我的评论,您可以使用任何 MQTT 代理实现请求-响应模式,但在 v5 之前,您需要自己实现这一点(要么有一个回复主题和一个消息 ID,要么包含一个特定的回复主题在每条消息中)。
因为 MQTT 3.11 本身不直接提供此功能,并且 MQTT 有效负载没有标准格式(只有一些字节!),所以不可能提出通用实现(请求中需要某种唯一 id)。这在 MQTT v5 中通过包含Response Topic和Correlation Data等属性的能力得到解决。对于早期版本,您只能在有效负载中添加一些额外的信息(使用您选择的任何编码机制)。
有一些 Stack Overflow 问题可能会提供一些见解:
其他文章:
$aws/things/thingName/shadow/get
AWS IoT 响应/get/accepted
或/get/rejected
)。这里有几个节点包(注意:这些已经有一段时间没有更新了,我也没有查看代码):
即使使用 MQTT v5,您也需要自己实现空闲超时位。如果您使用的是 QOS 1/2,那么代理将负责重新发送消息(直到它接收到 PUBACK/PUBCOMP),因此重新发送消息可能会适得其反(当通信链路断开时,大量相同的消息排队等候)
我所做的工作流程的总结