flask-MQTT:MQTT客户端在连接后立即断开连接

人气:770 发布:2022-10-16 标签: python flask mqtt mosquitto flask-socketio

问题描述

我与当地的蚊子经纪人一起尝试了FlaskMQTT(https://github.com/stlehmann/Flask-MQTT)的示例项目。但不幸的是,它并没有奏效。 未正确忽略订阅和发布。因此,我添加了一些记录器消息:

def handle_connect(client, userdata, flags, rc):
print("CLIENT CONNECTED")

@mqtt.on_disconnect()
def handle_disconnect():
print("CLIENT DISCONNECTED")

@mqtt.on_log()
def handle_logging(client, userdata, level, buf):
print(level, buf)
16发送CONNECT(u0,p0,wr0,wq0,wf0,c1,k30)客户端id=b‘flaskmqtt’ 客户端断开连接 16收到CONNACK(0,0) 客户端已连接 16发送CONNECT(u0,p0,wr0,wq0,wf0,c1,k30)客户端id=b‘flaskmqtt’ 客户端断开连接 16收到CONNACK(0,0)

Moterto Broker显示由于客户端已连接,它断开了FlaskApp的连接:

1580163250:从端口1883上的127.0.0.1新建连接。 1580163250:客户端flASK_mqtt已连接,正在关闭旧连接。 1580163250:新客户端从127.0.0.1作为flASK_mqtt(p2,c1,k30)连接。 1580163250:未指定遗嘱消息。 1580163250:发送CONNACK到FLAASK_MQTT(0,0) 1580163251:从端口1883上的127.0.0.1新建连接。 1580163251:客户端flASK_mqtt已连接,正在关闭旧连接。 1580163251:新客户端从127.0.0.1作为flASK_mqtt(p2,c1,k30)连接。 1580163251:未指定遗嘱消息。 1580163251:发送CONNACK到FLAASK_MQTT(0,0) 1580163251:客户端FLAASK_MQTT上的套接字错误,正在断开连接。

我还测试了一个简单的不带烧瓶的python.paho MQTT客户端示例,它可以正常工作。 我还更改了在flaskMQTT代码self.client.loop_start() --> self.client.loop_forever()内尝试了几次循环启动...未更改任何内容。

那么你知道问题出在哪里吗?我也调试了flASK-MQTT代码,但找不到问题。 (我的PYTHON版本是PYTHON 3.6.9(默认,2019年11月7日10:44:02) (我的主机系统是初级Linux)

可能flASK-MQTT库已弃用? 如有任何提示或想法,欢迎光临!

推荐答案

失败的原因在蚊子日志中。

1580163250: New connection from 127.0.0.1 on port 1883.
1580163250: Client flask_mqtt already connected, closing old connection.
1580163250: New client connected from 127.0.0.1 as flask_mqtt (p2, c1, k30).
1580163250: No will message specified.
1580163250: Sending CONNACK to flask_mqtt (0, 0)
连接到代理的每个客户端都必须具有唯一的客户端ID。在本例中,FASK客户端尝试与具有相同客户端ID的代理建立多个连接。当第二个连接启动时,Broker会发现客户端ID相同,并自动断开第一个连接。

您实际上没有提供任何代码来显示您如何设置客户端连接,因此我们无法就如何实际修复它提出任何建议。您注意到GitHub页面上一个示例结尾处的Readme.md中的注释了吗?

561