sbh*_*tla 5 python mqtt mosquitto paho
我正在使用Mosquitto(现在为Paho)的python MQTT客户端连接到HiveMQ代理。该代码非常基础,取自其文档-https: //pypi.python.org/pypi/paho-mqtt
#SUBSCRIBER
import paho.mqtt.client as mqtt
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, rc):
client.subscribe("GB/node0/", 2)
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
print "Topic: ", msg.topic+'\nMessage: '+str(msg.payload)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.15.4", 1883, 60)
# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
client.loop_forever()
Run Code Online (Sandbox Code Playgroud)
如您在client.subscribe()中所注意到的,QoS为2。这是对官方文档代码的唯一修改。
发布客户的代码是-
#PUBLISHER
import paho.mqtt.client as mqtt
mqttc = mqtt.Client("python_pub")
mqttc.connect("192.168.15.4", 1883, 60)
mqttc.publish("GB/node0/", "Hello, World baby!",2)
Run Code Online (Sandbox Code Playgroud)
此处的QoS也为2。
QoS的这种修改导致订户仅接收20条消息。经过进一步的探查,我意识到问题可能是由于引起的max_inflight_messages_set(),这是一个选项功能,它设置了QoS> 0的最大消息数,该消息可以一次通过它们的网络流。默认值为20。
但是,将其更改为任何其他值均无效。另外,为什么客户在收到这些消息后仍认为这些消息仍在运行中?我该如何解决该问题?我如何确保客户了解这些消息不是“机上”并且已经传递?
mqttc.loop(2,10)尝试在发布者之后调用mqttc.publish(),以便发布者可以处理来自代理的 QOS2 确认,表明它已收到发布。
2 秒超时和 10 个数据包可能超出了需要,但它应该可以工作
| 归档时间: |
|
| 查看次数: |
4481 次 |
| 最近记录: |