ubuntu Paho(MQTT)客户端无法连接

insrf1ej  于 2023-03-17  发布在  其他
关注(0)|答案(1)|浏览(346)

我使用这个python脚本来实现一个基本的Paho(MQTT)订阅者,但是在某些情况下,它不会调用on_connect
我尝试了下面的代码,所有代码都完全相同:

  • 运行在一个Raspbery圆周率,经纪人在桌面PC(Ubuntu)。作品
  • 在PC(Ubuntu)上运行,代理在同一PC上。不工作
  • 在PC(Ubuntu)上运行,代理在其他PC(Ubuntu)上运行。不工作
  • 在PC(Ubuntu)上运行,broker.hivemq.com作为代理。工作
  • 运行在PC(Ubuntu),broker.hivemq.com(它的IP)作为代理。工作

我通常也这样做:

  • 在所有先前的组合终端mosquito_sub/pub.作品.
  • 所有先前组合中的正式C++ paho Package 器。工作

也尝试了官方网站上列出的所有设置方法。所以python的paho库似乎不能与我的本地代理很好地沿着,除非我从我的raspberry运行它。但是使用相同的代理可以与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()
fykwrbwg

fykwrbwg1#

我遇到了同样的问题,在客户端的构造函数中更改MQTT协议的版本解决了这个问题。

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

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

相关问题