on_disconnect mqtt客户端永远不会被调用

问题描述:

我想监视一个mqtt代理,这样我就可以在出现连接中断时触发通知。on_disconnect mqtt客户端永远不会被调用

我的方法是创建一个云客户端,除监视代理外什么都不做。 “on_disconnect”似乎是合适的方法,但我无法触发它。 (我一直在不同的终端上加载和卸载代理服务)。

的方法是一个骨架:

import random 
import time 


def RepresentsInt(s): 
    try: 
     int(s) 
     return True 
    except ValueError: 
     return False 
def on_message(client, userdata, message): 
     print message 
def on_connect(client, userdata, flags, rc): 
    print("Connected with result code "+str(rc)) 
    mqttc.subscribe('control/iterate',qos=0) 
def on_disconnect(client, userdata, rc): 
     print("Disconnected") 
mqttc = mqtt.Client() 
mqttc.on_connect = on_connect 
mqttc.on_message = on_message 
mqttc.connect('10.147.17.234', port=1883, keepalive=1) 



print("test") 
mqttc.loop_forever() 

显然,有简单的方法可以做到这一点,但我觉得有一个优雅的解决这个问题,我只是缺少。

+0

请出示你的代码的一个完整的例子,其他人可以运行和调试。 – nos

+1

你等待'on_disconnect'开启多久了,你在连接上设置了哪些活动值? – hardillb

+0

保持活跃是第一次60和然后1.代码字面上是一个骨架。 – Sam

你还没有真正加入on_disconnect再打代码:

import random 
import time 


def RepresentsInt(s): 
    try: 
     int(s) 
     return True 
    except ValueError: 
     return False 
def on_message(client, userdata, message): 
     print message 
def on_connect(client, userdata, flags, rc): 
    print("Connected with result code "+str(rc)) 
    mqttc.subscribe('control/iterate',qos=0) 
def on_disconnect(client, userdata, rc): 
     print("Disconnected") 
mqttc = mqtt.Client() 
mqttc.on_connect = on_connect 
mqttc.on_message = on_message 
#added the following line 
mqttc.on_disconnect = on_disconnect 
mqttc.connect('10.147.17.234', port=1883, keepalive=1) 



print("test") 
mqttc.loop_forever() 
+0

非常感谢!这很令人尴尬... – Sam