MQTT(消息队列遥测传输),是一个基于客户端-服务器的消息发布/订阅传输协议。
一、环境
安装mqtt库:
pip install paho-mqtt
二、代码解析
1.使用到的库:
import paho.mqtt.client as mqtt #用于mqtt调用
import json #用于配置发送消息的格式
2.实例:
import paho.mqtt.client as mqtt
import json
HOST = "101.10.10.214" #域名
PORT = 1683 #端口
client_id = "ytest001" #client id,根据实际内容
Q_topic="persistent://test/topic01" #请求的topic
D_topic="persistent://test/topic02" #订阅topic
# 连接成功回调函数
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe(D_topic) #设置订阅topic
# 消息推送回调函数
def on_message(client, userdata, msg):
print("主题:"+msg.topic+" 消息:"+str(msg.payload.decode('utf-8')))
# 订阅回调
def on_subscribe(client, userdata, mid, granted_qos):
print("On Subscribed: qos = %d" % granted_qos)
# 断开连接回调函数
def on_disconnect(client, userdata, rc):
if rc==0:
print("connect success !")
else :
print("connect error: rc=%s"% rc)
#设置消息
data = {
"msg_id": "111",
"type": 3,
"topic": "topic01",
"content": {
"id": 1
},
"from": 1,
"to": -1
}
param = json.dumps(data)
#创建
client = mqtt.Client(client_id)
client.username_pw_set("username", "password")
client.on_connect = on_connect
client.on_message = on_message
client.on_subscribe = on_subscribe
client.on_disconnect = on_disconnect
client.connect(HOST, PORT, 60)
client.publish(Q_topic, payload=param, qos=0) # 发送消息
client.loop_forever() #阻塞模式保持连接
3.结果:
如果连接成功,结果会显示:
Connected with result code 0
On Subscribed: qos = 0
消息发送成功有回调,则会显示回调消息,包含主题和消息内容: