MQTT:不接收脱机消息
我的客户端使用以下参数连接:MQTT:不接收脱机消息,mqtt,iot,mosquitto,Mqtt,Iot,Mosquitto,我的客户端使用以下参数连接: 清理会话:False 客户端ID:固定(每次相同) 以QoS=1订阅 以QoS=1发布的消息 我试图验证,如果代理在客户端脱机时收到消息,则消息将在代理上排队,并在客户端再次联机时发送给客户端 但是,我发现代理在重新连接时不会向客户端发送任何内容 我就是这样测试的: 使用上述四个参数将客户机连接到代理。 使用QoS=1订阅感兴趣的主题 断开客户端连接 使用另一个客户端程序和另一个客户端id,连接到代理 将消息发布到当前脱机客户端订阅的同一主题。 等待几秒钟,现在使用
pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
log_type debug
listener 9001
protocol websockets
listener 1883
protocol mqtt
allow_anonymous false
acl_file /path/to/acl_file
password_file /path/to/password_file
这是一个GUI客户端行为不端的案例。三个 我把它贴出来,这样别人就不会在类似的事情上浪费时间了 我试过三位客户,他们都有不同的问题,如下所述: MQTT.fx:代理会在连接后立即传递消息,但主题尚未在当前会话中订阅,因此MQTT.fx没有任何指定位置显示收到的消息。因此,它不会在屏幕上显示消息。 MQTT.fx还通过订阅$SYS logs主题使Wireshark调试复杂化,该主题淹没了Wireshark,来自代理的主消息在大量数据包中丢失 MQTT-Spy:与MQTT.fx不同,它有一个catch-all选项卡,因此如果代理发送的消息在当前会话中未订阅,它将在catch-all选项卡中显示。不幸的是,MQTT Spy的实现者已经决定,他们的应用程序将在断开连接之前取消订阅所有主题。由于客户端不再订阅该主题,borker不会为其排队任何消息 MQTT镜头:它有一个bug。它不会保存清理会话的连接设置。即使您将clean session设置为false,它也总是以clean session=true打开连接
最后,我用Paho Java库编写了一个测试程序,发现一切正常
我想知道为什么没有MQTT的参考实现GUI客户端—所有当前的实现要么都是坏的,要么都是不必要的“智能”,以至于它们阻止您测试合法的测试用例。这是一个GUI客户端行为不端的案例。三个 我把它贴出来,这样别人就不会在类似的事情上浪费时间了 我试过三位客户,他们都有不同的问题,如下所述: MQTT.fx:代理会在连接后立即传递消息,但主题尚未在当前会话中订阅,因此MQTT.fx没有任何指定位置显示收到的消息。因此,它不会在屏幕上显示消息。 MQTT.fx还通过订阅$SYS logs主题使Wireshark调试复杂化,该主题淹没了Wireshark,来自代理的主消息在大量数据包中丢失 MQTT-Spy:与MQTT.fx不同,它有一个catch-all选项卡,因此如果代理发送的消息在当前会话中未订阅,它将在catch-all选项卡中显示。不幸的是,MQTT Spy的实现者已经决定,他们的应用程序将在断开连接之前取消订阅所有主题。由于客户端不再订阅该主题,borker不会为其排队任何消息 MQTT镜头:它有一个bug。它不会保存清理会话的连接设置。即使您将clean session设置为false,它也总是以clean session=true打开连接
最后,我用Paho Java库编写了一个测试程序,发现一切正常
我想知道为什么没有MQTT的参考实现GUI客户机—所有当前的实现要么都是坏的,要么是不必要的“智能的”它们阻止您测试合法的测试用例。您重新连接时是否重新订阅主题?我不应该这样做,因为代理应该记住我以前的订阅,因为以前的连接都是以cleanSession=false启动的。无论如何,我也尝试过重新订阅。我什么都没有。用你的mosquitto配置文件更新问题添加了问题中的配置重新连接时你是否重新订阅主题?我不应该这样做,因为代理应该记住我以前的订阅,因为即使以前的连接是以cleanSession=false启动的。无论如何,我也尝试过重新订阅。我什么都没有。用你的mosquitto配置文件更新问题添加了有问题的配置