MQTT-有没有办法检查客户端是否仍然连接
问题内容:
有没有办法检查客户端是否仍连接到MQTT代理?
就像是
if client.isConnected(): # for example
# if True then do stuff
编辑:有时我的Raspberry Pi停止从客户端接收,尽管它仍在运行(从它的外观来看,代码仍在显示更新的结果)。
这是代码,因为我可能做错了什么:
client = mqtt.Client()
client.connect(address, 1883, 60)
while True:
data = getdata()
client.publish("$ahmed/",data,0)
time.sleep(0.2)
事实是我不在,所以我什至不确定为什么停下来!只有重新启动代理后,代理才会重新开始接收。
问题答案:
您可以在on_connect中激活一个标志,而在on_disconnect中禁用它。这样,您可以知道客户端是否已连接。
import paho.mqtt.client as mqtt
flag_connected = 0
def on_connect(client, userdata, flags, rc):
global flag_connected
flag_connected = 1
def on_disconnect(client, userdata, rc):
global flag_connected
flag_connected = 0
client = mqtt.Client()
client.on_connect = on_connect
client.on_disconnect = on_disconnect
client.connect(server,port)
client.loop_forever()
if flag_connected == 1:
# Publish message
else:
# Wait to reconnect