Paho(MQTT) 客户端无法连接
Paho(MQTT) client can't connect
我正在使用此 python 脚本来实现基本的 Paho(MQTT) 订阅者,但在某些情况下它不会调用 on_connect。
我尝试了以下方法,所有方法都使用完全相同的代码:
- 运行 在 Raspbery pi 中,在台式机上代理 (Ubuntu)。 作品.
- 运行 in a Pc(Ubuntu), broker 在同一台 Pc 上。 不起作用。
- 运行 在一台 Pc(Ubuntu), broker 在另一台 Pc(Ubuntu). 不起作用。
- 运行 在 Pc(Ubuntu) 中,broker.hivemq.com 作为经纪人。 作品.
- 运行 在 Pc(Ubuntu) 中,broker.hivemq.com(它是 IP)作为代理。 作品.
我也经常这样做:
- mosquitto_sub/pub 在之前所有组合中的终端中。 作品.
- 所有先前组合中的官方 C++ paho 包装器。 作品.
也尝试了官网列出的所有设置方法。所以 python 的 paho 图书馆似乎与我当地的经纪人相处得不好,除非我 运行 它来自我的树莓派。但是,如果从终端使用 MQTT,则使用相同的代理可以很好地与 c++ 的 paho 库一起使用。对可能发生的事情有什么想法吗?
import paho.mqtt.client as mqtt
def on_connect(mqtt_client, obj, flags, rc):
mqtt_client.subscribe("test")
print "on_connect"
def on_message(mqtt_client, obj, msg):
print "on_message"
mqtt_client = mqtt.Client()
mqtt_client.on_connect = on_connect
mqtt_client.on_message = on_message
mqtt_client.connect("127.0.0.1",1883)
mqtt_client.loop_forever()
我遇到了同样的问题,在 Client's constructor 中更改 MQTT 协议的版本解决了它。
mqtt_client = mqtt.Client("", True, None, mqtt.MQTTv31)
由于您没有指定协议,它使用默认协议:MQTTv311。
我正在使用此 python 脚本来实现基本的 Paho(MQTT) 订阅者,但在某些情况下它不会调用 on_connect。
我尝试了以下方法,所有方法都使用完全相同的代码:
- 运行 在 Raspbery pi 中,在台式机上代理 (Ubuntu)。 作品.
- 运行 in a Pc(Ubuntu), broker 在同一台 Pc 上。 不起作用。
- 运行 在一台 Pc(Ubuntu), broker 在另一台 Pc(Ubuntu). 不起作用。
- 运行 在 Pc(Ubuntu) 中,broker.hivemq.com 作为经纪人。 作品.
- 运行 在 Pc(Ubuntu) 中,broker.hivemq.com(它是 IP)作为代理。 作品.
我也经常这样做:
- mosquitto_sub/pub 在之前所有组合中的终端中。 作品.
- 所有先前组合中的官方 C++ paho 包装器。 作品.
也尝试了官网列出的所有设置方法。所以 python 的 paho 图书馆似乎与我当地的经纪人相处得不好,除非我 运行 它来自我的树莓派。但是,如果从终端使用 MQTT,则使用相同的代理可以很好地与 c++ 的 paho 库一起使用。对可能发生的事情有什么想法吗?
import paho.mqtt.client as mqtt
def on_connect(mqtt_client, obj, flags, rc):
mqtt_client.subscribe("test")
print "on_connect"
def on_message(mqtt_client, obj, msg):
print "on_message"
mqtt_client = mqtt.Client()
mqtt_client.on_connect = on_connect
mqtt_client.on_message = on_message
mqtt_client.connect("127.0.0.1",1883)
mqtt_client.loop_forever()
我遇到了同样的问题,在 Client's constructor 中更改 MQTT 协议的版本解决了它。
mqtt_client = mqtt.Client("", True, None, mqtt.MQTTv31)
由于您没有指定协议,它使用默认协议:MQTTv311。