MQTT的发布和订阅

准备工作

本文测试MQTT的发布/订阅,分为客户端版和python版。

首先我们需要一个MQTT服务器,这里推荐使用EMQ,一步搭建,省去了很多部署的麻烦。

选择Windows版本下载,自己选择目录解压后,进入bin目录打开cmd,运行emqx start命令开启服务即可。此时在浏览器地址栏输入: localhost:18083,输入用户名:admin,密码:public进入,可以看到主界面。

界面

Python版本

下载库

cmd下执行这个命令

1
pip install paho-mqtt

编写订阅端

新建一个mqtt_sub.py文件,编写代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import paho.mqtt.client as mqtt

HOST = "127.0.0.1"
PORT = 1883


def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe("chat")


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


client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(host=HOST, port=PORT, keepalive=600)
client.loop_forever()

编写发布端

新建一个mqtt_pub.py文件,编写代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import paho.mqtt.client as mqtt

HOST = "127.0.0.1"
PORT = 1883
mqttClient = mqtt.Client()


# 连接MQTT服务器
def on_mqtt_connect():
mqttClient.connect(host=HOST, port=PORT, keepalive=600)
mqttClient.loop_start()


# publish 消息
def on_publish(topic, payload, qos):
mqttClient.publish(topic, payload, qos)


# 消息处理函数
def on_message_come(client, userdata, msg):
print(msg.topic + " " + ":" + str(msg.payload))


# subscribe 消息
def on_subscribe():
mqttClient.subscribe(topic="chat", qos=2)
mqttClient.on_message = on_message_come # 消息到来处理函数


def main():
on_mqtt_connect()
on_publish(topic="chat", payload="Hello Python!", qos=2)
on_subscribe()
while True:
pass


if __name__ == '__main__':
main()

执行文件

首先运行mqtt_sub.py,接着,同时运行mqtt_pub.py,这时候就可以收到自己订阅的消息

python结果

至此,Python版本测试成功。完整代码

客户端版本

下载客户端工具

这里推荐MQTT.fx

下载完毕安装后打开界面如下:

客户端

配置连接

Extras->Edit Connection Profiles,然后按照下图配置

配置连接

配置完毕后点击Connect

连接

创建自己的订阅

创建订阅

这边配置完毕,接下来进入刚刚的Dashboard,选择Websocket

Dashboard

先连接

连接

然后发布一个主题为goods的信息

发布

发送后MQTT.fx客户端便会接收到发送的信息

接收

至此,客户端版本测试完毕