MQTT的发布和订阅

准备工作

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

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

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

Python版本

下载库

cmd下执行这个命令

pip install paho-mqtt

编写订阅端

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

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文件,编写代码如下:

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版本测试成功。完整代码

客户端版本

下载客户端工具

这里推荐MQTT.fx

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

配置连接

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

配置完毕后点击Connect

创建自己的订阅

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

先连接

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

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

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

你可能感兴趣的:(MQTT的发布和订阅)