python mqtt 实现消息订阅+消息推送 支持断线重连 ,自动重连,保活不掉线
在这里插入图片描述
安装paho-mqtt

pip install -i https://pypi.doubanio.com/simple paho-mqtt

完整代码:

import paho.mqtt.client as mqtt
import time

broker_address = '127.0.0.1'
broker_port = 1883

client_id = "myclientid-test0001"
keep_alive_interval = 60

client = mqtt.Client(client_id=client_id)
client.keep_alive = keep_alive_interval


def on_connect(client,userdata,flags,rc):

    if rc == 0:
        print("connected with result code:" + str(rc))
        client.subscribe("topic/test")
    else:
        # 如果链接断开,尝试重新连接
        print("Failed to reconnect to MQTT broker")


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

def on_disconnect(client,userdata,rc):
	if rc != 0:
    	print("disconnented from MQTT :"+str(rc))

def connect_broker():
    # 设置连接断开的回调函数
    client.on_connect = on_connect
    client.on_message = on_message
    client.on_disconnect = on_disconnect
    client.reconnect_delay_set(min_delay=1,max_delay=120)
    # 连接到mqtt 服务器
    print("Connecting to MQTT broker...")
    connectedFlag = 0
    while connectedFlag != 1:
        try:
            client.connect(broker_address, broker_port)
            print("First time connected to MQTT broker,已连接成功!")
            connectedFlag = 1
            client.loop_forever()
        except:
            print("Failed to connect to MQTT broker,try again 正在重试.....")
            time.sleep(10)


if __name__ == '__main__':
    connect_broker()











Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐