通俗理解MQTT中的发布和订阅

前言

刚开始接触物联网,IOT,MQTT,感觉傻傻的什么都分不清楚,对于MQTT各方的身份和功能也无法理解,直到有一天,真正亲自去使用了MQTT服务器,才理解其中的奥妙。

在不了解MQTT通信原理以及程序架构的情况下,不要先看代码,否则会无比痛苦,还是先通过MQTT通信工具测试一遍通信过程。这样理解起来就比较直观。

从网上看到的,感觉理解的,通俗易懂。

MQTT服务器类似一个公告栏,里面张贴了各种广告。

小张跑过来说,凡是涉及商场促销的(/public/TEST/Promotions)消息都发给自己(订阅)

第二天,小李过来贴广告了,主题是(/public/TEST/Promotions),发布的内容是“30号商场有促销活动,满100元送5个鸡蛋”

此时,公告栏会自动发短信给小张,发送的信息为 “30号商场有促销活动,满100元送5个鸡蛋”

小张:APP端;

小李:设备端;

公告栏:云端的MQTT服务器;

通过软件演示MQTT发布和订阅机制

1. Windows上搭建EMQTT服务器

官方下载地址
https://www.emqtt.io/downloads/

百度网盘下载地址:
链接:https://pan.baidu.com/s/1k0oPkN5HuS7A_y22YJP30Q
提取码:9q36

下载的版本为windows10安装包,请根据操作系统进行下载。安装包名称为:emqttd-windows10-v2.3.11.zip

解压缩后,将文件放至不含中文路径的盘符中。

1.启动EMQTT服务器

打开命令行操作界面
在这里插入图片描述
找到你压缩后的文件,进入bin目录
在这里插入图片描述
在命令行中输入命令:

cd /d D:\EMQTT\emqttd\bin

在这里插入图片描述
然后执行命令 emqttd console
在这里插入图片描述
2.通过网页登录查看连接信息

网页地址: http://localhost:18083/

用户名:admin

   密码:public

在这里插入图片描述
登录进入便可以看到,说明安装成功

执行演示

打开两个通信猫
在这里插入图片描述

然后找到"网络"——》MQTT,修改下面几个东西

服务端ip地址     127.0.0.1

端口                   1883

一个订阅主题和一个发布主题里面的主题得一致

在这里插入图片描述
订阅的需要点击"订阅主题"才能接收到发布的人消息
在这里插入图片描述

效果如图:
在这里插入图片描述

这个发布主题的消息不能超过3个字,不然发布完一次后面就没效果,限制在3个字才能保持一边发送另一边能保持接收到信息,具体原因未知。
在这里插入图片描述
本篇文章转载于:https://blog.csdn.net/qq84395064/article/details/88018920

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Vue 使用 MQTT,一般需要安装 `paho-mqtt` 库。可以通过 `npm` 进行安装: ``` npm install paho-mqtt --save ``` 接下来,我们可以在 Vue 的组件使用 `paho-mqtt` 库进行 MQTT发布订阅。 首先,需要创建一个 MQTT 的客户端连接对象,可以在 Vue 组件的 `created` 生命周期进行创建: ```javascript created() { // 创建 MQTT 客户端连接对象 this.client = new Paho.MQTT.Client("localhost", 8000, "clientId"); // 连接服务器 this.client.connect({ onSuccess: this.onConnect }); }, ``` 其,`Paho.MQTT.Client` 是 `paho-mqtt` 库提供的 MQTT 客户端连接对象。它的构造函数需要传入三个参数: - `host`:MQTT 服务器的主机名或 IP 地址; - `port`:MQTT 服务器的端口号; - `clientId`:客户端 ID。 接下来,我们可以在 `onConnect` 回调函数订阅 MQTT 主题: ```javascript onConnect() { // 订阅主题 this.client.subscribe("testTopic"); }, ``` 其,`this.client.subscribe` 方法用于订阅 MQTT 主题,需要传入一个主题名称作为参数。 当客户端收到 MQTT 消息时,会触发 `onMessageArrived` 回调函数。可以在该函数处理接收到的消息: ```javascript onMessageArrived(message) { console.log("Received message:", message.payloadString); }, ``` 最后,我们可以在 Vue 组件定义发布消息的方法: ```javascript methods: { // 发布消息 publishMessage() { const message = new Paho.MQTT.Message("Hello, MQTT!"); message.destinationName = "testTopic"; this.client.send(message); }, }, ``` 其,`Paho.MQTT.Message` 是 `paho-mqtt` 库提供的 MQTT 消息对象。它的构造函数需要传入一个字符串作为消息内容。接着,我们需要为消息设置目标主题,然后通过 `this.client.send` 方法将消息发送出去。 完整的代码示例如下: ```javascript <template> <div> <button @click="publishMessage">发布消息</button> </div> </template> <script> import Paho from "paho-mqtt"; export default { data() { return { client: null, }; }, created() { // 创建 MQTT 客户端连接对象 this.client = new Paho.MQTT.Client("localhost", 8000, "clientId"); // 连接服务器 this.client.connect({ onSuccess: this.onConnect }); }, methods: { // MQTT 连接成功回调函数 onConnect() { // 订阅主题 this.client.subscribe("testTopic"); }, // MQTT 收到消息回调函数 onMessageArrived(message) { console.log("Received message:", message.payloadString); }, // 发布消息 publishMessage() { const message = new Paho.MQTT.Message("Hello, MQTT!"); message.destinationName = "testTopic"; this.client.send(message); }, }, mounted() { // 注册 MQTT 消息接收回调函数 this.client.onMessageArrived = this.onMessageArrived; }, }; </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值