石家庄网站建设seo公司,厦门市建设局网站住房保障,国外做网站,如何建一个简单的网站一、简介
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上#xff0c;是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议#xff0c;为此#xff0c;它需要一个消息中间件。 …一、简介
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议为此它需要一个消息中间件。
MQTT传输的消息分为主题Topic和负载payload当订阅指定的Topic后就会收到该Topic下的消息内容payload。
二、mosquitto使用
安装
https://mosquitto.org/download/
windows: linux:
apt install mosquitto开启broker
C:\Program Files\mosquittomosquitto.exe --help
C:\Program Files\mosquittomosquitto.exe -p 5555 -v开启Subscriber
指定broker并指定test的topic进行订阅
C:\Program Files\mosquittomosquitto_sub.exe --help
C:\Program Files\mosquittomosquitto_sub.exe -h 127.0.0.1 -p 5555 -t test使用Publisher发送消息
指定test的topic发送payload为123的消息
C:\Program Files\mosquittomosquitto_pub.exe --help
C:\Program Files\mosquittomosquitto_pub.exe -h 127.0.0.1 -p 5555 -t test -m 123此时的Subscriber
三、解决TLS证书问题
使用mosquitto_sub时因为tcp传输问题不成功 原因是证书问题导致TCP握手并不成功图为携带证书后的结果 为解决该问题首先pip安装如下库
pip3 install paho-mqtt使用如下代码
import ssl
import paho.mqtt.client as mqtt# 定义回调函数处理接收到的消息
def on_message(client, userdata, msg):print(fTopic: {msg.topic}, Message: {msg.payload.decode(utf-8)})# 定义回调函数处理连接事件
def on_connect(client, userdata, flags, rc):print(Connected with result code str(rc))# 订阅主题client.subscribe(your/topic)# 创建 MQTT 客户端
client mqtt.Client()
# 设置连接和消息回调函数
client.on_connect on_connect
client.on_message on_message
# 禁用证书认证
client.tls_set(ca_certsNone, certfileNone, keyfileNone, cert_reqsssl.CERT_NONE, tls_versionssl.PROTOCOL_TLS, ciphersNone)
# 连接到 MQTT 代理服务器
client.connect(your_host_address, 8883, 60)
# 开始处理消息循环
client.loop_start()# 保持连接
while True:pass# 停止消息循环
client.loop_stop()# 断开与 MQTT 代理服务器的连接
client.disconnect()结果成功订阅