2016-12-19 48 views
0

我想監視一個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

回答

1

你還沒有真正加入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

相關問題