python3 mqtt 客戶端以及服務端


 

pip3 install paho-mqtt

client

#!/usr/bin/env python  
#coding=utf-8  

import json
import sys
import os
import paho.mqtt.client as mqtt
import time
 
sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
sys.path.append("..")
 
TASK_TOPIC = 'test'  # 客戶端發布消息主題
 
client_id = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))

client = mqtt.Client(client_id, transport='tcp')
 
client.connect("127.0.0.1", 1883, 60)  # 此處端口默認為1883,通信端口期keepalive默認60
client.loop_start()
 
 
def clicent_main(message: str):
    """
    客戶端發布消息
    :param message: 消息主體
    :return:
    """
    time_now = time.strftime('%Y-%m-%d %H-%M-%S', time.localtime(time.time()))
    payload = {"msg": "%s" % message, "data": "%s" % time_now}
    # publish(主題:Topic; 消息內容)
    client.publish(TASK_TOPIC, json.dumps(payload, ensure_ascii=False))
    print("Successful send message!")
    return True
 
 
if __name__ == '__main__':
    msg = "我是一條測試數據!"
    clicent_main(msg)

 

server

#!/usr/bin/env python  
#coding=utf-8  

import json
import sys
import os
import time
import paho.mqtt.client as mqtt
sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
sys.path.append("..")
 
REPORT_TOPIC = 'test'  # 主題
 
 
def on_connect(client, userdata, flags, rc):
    print('connected to mqtt with resurt code ', rc)
    client.subscribe(REPORT_TOPIC)  # 訂閱主題
 
 
def on_message(client, userdata, msg):
    """
    接收客戶端發送的消息
    :param client: 連接信息
    :param userdata: 
    :param msg: 客戶端返回的消息
    :return: 
    """
    print("Start server!")
    payload = json.loads(msg.payload.decode('utf-8'))
    print(payload)
 
 
def server_conenet(client):
    client.on_connect = on_connect  # 啟用訂閱模式
    client.on_message = on_message  # 接收消息
    client.connect("127.0.0.1", 1883, 60)  # 鏈接
    # client.loop_start()   # 以start方式運行,需要啟動一個守護線程,讓服務端運行,否則會隨主線程死亡
    client.loop_forever()   # 以forever方式阻塞運行。
 
 
def server_stop(client):
    client.loop_stop()  # 停止服務端
    sys.exit(0)
 
 
def server_main():
    client_id = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
    client = mqtt.Client(client_id, transport='tcp')
    server_conenet(client)
 
 
if __name__ == '__main__':
    # 啟動監聽
    server_main()

 

 

參考:

https://blog.csdn.net/sinat_32651363/article/details/87876978

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM