MQTT paho客户端连接超时错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MQTT paho客户端连接超时错误相关的知识,希望对你有一定的参考价值。

我在笔记本电脑上运行MQTT Mosquitto代理。然后我试图将2个Paho MQTT客户端连接到它:1)使用Java Paho的android手机和2)使用Python Paho的Raspberry Pi。

从Android连接完美。没问题。

但是,Raspberry由于某种原因无法连接。而不是client.connect方法阻止,并在一段时间后收到以下内容:

Traceback (most recent call last):
  File "sensorsClient.py", line 28, in <module>
    client.connect(mqttServer, 1883)
  File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 700, in connect
    return self.reconnect()
  File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 822, in reconnect
    sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
socket.error: [Errno 110] Connection timed out

连接的代码如下:

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("$SYS/#")

def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

mqttServer = 'zzz.xxx.ccc.qqq' # Public IP of the laptop


client = mqtt.Client("", True, None, mqtt.MQTTv31)
client.on_connect = on_connect
client.on_message = on_message

client.connect(mqttServer, 1883)
client.loop_start()

一切都通过WIFI在一个网络内完成。没有移动数据。有人可以解释一下为什么会发生这种情况吗?

答案

您可以运行的第一个检查之一是通过您的代理配置(如果它是您自己的代理,否则请询问您的供应商的凭据),并查看您是否已设置任何用户名/密码进行连接。最可能的是,客户端上的连接超时问题。

如果是这种情况,您只需在客户端配置中设置用户名/密码,如:

client.username_pw_set("username_on_broker", "password_on_broker")

此外,我建议使用urlparse.urlparse("broker url")来清理/标准化您的代理URL

如果这对您没有帮助,请伸手可及。

以上是关于MQTT paho客户端连接超时错误的主要内容,如果未能解决你的问题,请参考以下文章

python paho mqtt客户端连接通过ssl/tls给出错误

MQTT消息框架paho-mqtt与emqx安装部署与启动,python

在 paho mqtt(客户端证书)中进行连接时,ee 密钥太小

使用 Paho MQTT Js 成功连接到 Mosquitto 代理后突然断开连接

Paho Mqtt SSL连接时常见异常问题以及解决方案

MQTT研究之EMQ:eclipse的paho之java客户端使用注意事项