Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MQTT-如何知道设备是否接收到消息_Mqtt - Fatal编程技术网

MQTT-如何知道设备是否接收到消息

MQTT-如何知道设备是否接收到消息,mqtt,Mqtt,我们有mqtt生产者和消费者。 MQTT生产者处于客户端级别。 当我们将消息推送到生产者时,如果设备已打开,则它将接收消息。 如果设备已关闭,则在打开之前不会收到消息 我们需要知道,当消息发送到服务器中的MQTT时,若服务器关闭,那个么我们需要知道服务器的状态为,它是排队的还是并没有收到 基于此,我们将为用户发送消息作为,请打开设备做具体操作 是否有更好的方法来了解MQTT中的状态,以查找消息是否已传递或失败,或排队以了解服务器是否处于活动状态。MQTT协议中没有端到端传递通知。发布/订阅范例的

我们有mqtt生产者和消费者。 MQTT生产者处于客户端级别。 当我们将消息推送到生产者时,如果设备已打开,则它将接收消息。 如果设备已关闭,则在打开之前不会收到消息

我们需要知道,当消息发送到服务器中的MQTT时,若服务器关闭,那个么我们需要知道服务器的状态为,它是排队的还是并没有收到

基于此,我们将为用户发送消息作为,请打开设备做具体操作


是否有更好的方法来了解MQTT中的状态,以查找消息是否已传递或失败,或排队以了解服务器是否处于活动状态。

MQTT协议中没有端到端传递通知。发布/订阅范例的一部分是发布者应该与订阅者分离,一个给定主题可以有0到多个订阅者

有两种方法可以解决这个问题

让订阅者回答一个单独的主题,以确认其已收到消息。您需要在消息负载中包含唯一标识符,以便在响应消息中使用它

您可以使用MQTT的最后遗嘱和遗嘱功能使订户保持其当前状态。启动时,它会将保留的消息发布到已知主题,例如,如果设备意外脱机,则会将true发布到consumer/12345/status,并将LWT设置为publish false。如果它完全关闭,它还应该发布false。这样,发布者可以在决定发布消息之前检查订阅者的状态


我不知道你在用哪个经纪人。但在EMQ X MQTT代理中,当QoS>1时,消息终止传递或ack代理将通知服务器

插件: