美文网首页
MQTT的发布和订阅

MQTT的发布和订阅

作者: Garfield猫 | 来源:发表于2021-03-17 08:30 被阅读0次

    准备工作

    本文测试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的发布和订阅

          本文链接:https://www.haomeiwen.com/subject/jalscltx.html