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

我尝试了以下操作,所有代码都完全相同:

  • 在 Raspbery pi 中运行,桌面 PC (Ubuntu) 上的代理。 工作
  • 在 Pc(Ubuntu) 上运行,在同一台 PC 上进行代理。 不起作用
  • 在 Pc(Ubuntu) 上运行,代理在其他 Pc(Ubuntu) 上。 不起作用
  • 在个人电脑(Ubuntu)中运行,broker.hivemq.com 作为代理。 工作
  • 在个人电脑(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()
    

    最佳答案

    我遇到了同样的问题,在 Client's constructor 中更改 MQTT 协议(protocol)的版本解决了它。

    mqtt_client = mqtt.Client("", True, None, mqtt.MQTTv31)
    

    由于您没有指定协议(protocol),它使用默认协议(protocol):MQTTv311。

    关于python - Paho(MQTT) 客户端无法连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38017111/

    10-13 02:32