2016-06-21 32 views
1

我已經安裝了蚊子,並在沒有問題的終端中使用,也安裝了paho for C++,蚊子和paho工作得很好。 然後通過pip爲python安裝paho。現在我試圖用這段代碼來測試它,但on_message和on_connect函數永遠不會被調用。我在做Paho用戶on_message/on_connect不工作

mosquitto_pub -h localhost -t "test" -m "This is a message"

而python腳本運行,但它不工作。它永遠不會打印「on_message!」的行

import paho.mqtt.client as mqtt 

def on_connect(self, mqtt_client, obj, flags, rc): 
    mqtt_client.subscribe("test") 

def on_message(self, mqtt_client, obj, msg): 
    print "on_message()" 


print "Initializing subscriber" 
mqtt_client = mqtt.Client() 
mqtt_client.on_connect = on_connect 
mqtt_client.on_message = on_message 
mqtt_client.connect("localhost",1883) 
print "Listening" 
while True: 
    mqtt_client.loop() 

我在做什麼錯?

回答

1

以下工作適合我。

我已刪除從回調self和交換爲mqtt_client.loop_forever()

import paho.mqtt.client as mqtt 

def on_connect(mqtt_client, obj, flags, rc): 
    mqtt_client.subscribe("test") 

def on_message(mqtt_client, obj, msg): 
    print "on_message()" 


print "Initializing subscriber" 
mqtt_client = mqtt.Client() 
mqtt_client.on_connect = on_connect 
mqtt_client.on_message = on_message 
mqtt_client.connect("localhost",1883) 
print "Listening" 
mqtt_client.loop_forever() 
+0

是否使用mosquitto_pub -h本地主機-t「測試」 -m「這是消息」的循環? 因爲它仍然不適合我。也許這是來自我的系統的東西。 –

+0

'mosquitto_pub -t test -m foo'但它足夠接近(默認代理是本地主機,不需要單引號消息) – hardillb

+0

好的!即使使用「mosquitto_pub -t test -m foo」,仍然無法正常工作。似乎是我的系統然後。謝謝! –