MQTT 客户端断开连接

时间:2021-02-22 14:10:37

标签: python mqtt

我正在尝试使用以下配置让两个 mqtt 客户端在 mqtt 服务器上进行通信:

listener 1883 
persistence true
connection_messages false
log_timestamp true
allow_anonymous false

和这段代码: 文件 Pong.py

import paho.mqtt.client as mqtt
broker = 'ipserver'
pub_topic = "Pong"
sub_topic = "Ping"

def on_connect(client, userdata,flags,rc):
    print("Connesso")
    client.subscribe(sub_topic)

def on_message(client,userdata,msg):
    print(str(msg.payload))
    client.publish(pub_topic, "Pong")

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(broker,1883,60)
client.loop_forever()

文件 Ping.py

import paho.mqtt.client as mqtt

#broker = "test.mosquitto.org"
broker = 'ipserver'
pub_topic = "Ping"
sub_topic = "Pong"

def on_connect(client, userdata,flags,rc):
    print("Connesso")
    client.subscribe(sub_topic)
    client.publish (pub_topic, "Ping")

def on_message(client,userdata,msg):
    print( msg.payload.decode('utf-8'))
    time.sleep(3)
    client.publish(pub_topic, "Ping")

def on_publish(mosq,obj,mid):
    print("Ping")

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.on_publish =on_publish
client.connect(broker,1883,60)
client.loop_forever()

问题是它们在循环中重复了 onconnect 函数,继续重新连接,因此无法相互通信

1 个答案:

答案 0 :(得分:1)

您已明确告知经纪人拒绝匿名客户,但您尚未提供:

  1. 任一客户端的用户名/密码
  2. 告诉代理如何在客户端连接时对其进行身份验证。

allow_anonymous false 改为 allow_anonymous true