Paho(MQTT)客户端无法连接

Mar*_*ura 4 python ubuntu mqtt mosquitto paho

我正在使用这个python脚本来实现一个基本的Paho(MQTT)订阅者,但在某些情况下它不会调用on_connect.

我尝试了以下内容,所有代码完全相同:

  • 在桌面PC(Ubuntu)上运行Raspbery pi,经纪人.工作.
  • 在Pc(Ubuntu)中运行,在同一个PC上运行.不行.
  • 在Pc(Ubuntu)中运行,在其他PC(Ubuntu)上运行.不行.
  • 在Pc(Ubuntu)中运行,broker.hivemq.com作为经纪人.工作.
  • 在Pc(Ubuntu),broker.hivemq.com(它的IP)中作为经纪人运行.工作.

我通常也这样做:

  • 所有先前组合中的mosquitto_sub/pub终端.工作.
  • 以前所有组合中的官方C++ paho包装器.工作.

还尝试了官方网站上列出的所有设置方法.所以python的paho库似乎与我的本地经纪人不相处,除非我从我的树莓中运行它.但是使用相同的代理可以很好地与c ++的paho库一起使用,如果使用终端的MQTT.什么可以发生的想法?

     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()
Run Code Online (Sandbox Code Playgroud)

dhi*_*iga 12

我有同样的问题,在Client的构造函数中更改MQTT协议的版本解决了它.

mqtt_client = mqtt.Client("", True, None, mqtt.MQTTv31)
Run Code Online (Sandbox Code Playgroud)

由于您未指定协议,因此它使用默认协议:MQTTv311.