简单学习下MQTT(2)

news2024/12/28 5:43:25

MQTT 简介

MQTT 是非常简单的协议,最初由 IBM 的两位工程师 Andy Stanford-Clark 以及 Arlen Nipper 在 1999 年为监控输油管道设计的。它被设计的场景就是有限的带宽、轻量级以及很小的耗电量,在那个时候,卫星宽带就是那么小,且贵得让人肉疼。(en.wikipedia.org/wiki/MQTT)

到了现代社会,虽然带宽的成本大大降低,但是仍有大量的场景需要用到这种协议,比如,智能家居(其实还是物联网)。许多的小型物联网设备靠着一块纽扣电池需要工作几年的时间,因此 MQTT 非常适合用来当作应用层的传输协议。

总结来说,MQTT 就是一个服务端、客户端架构的发布订阅消息传输协议。它非常轻量、开放、简单,设计上就非常容易实现。这些特性让它非常适合在如机器与机器(M2M)以及物联网(IoT) 这样受限于小内存以及窄带宽的领域发挥作用。(docs.oasis-open.org/mqtt/mqtt/v…)

IBM 在 2013 年将 3.1 版本提交到了 OASIS,而在之后的 2014 年,OASIS 加了很小的改动,发布了 3.1.1 版本。

2019 年,OASIS 给 MQTT 增加了很多特性,比如更好的错误处理、共享订阅、消息内容类型等等,版本也升级到了 5,之后也会用专门的章节来说说这些特性。

Hello World

首先,你需要有一个 MQTT Broker。首先需要安装 mosquitto …… 嗯?你不知道这是什么?好吧,那就换个更简单的做法。

首先,我们可以用一些公共的,比如国内的 EMQ(杭州映云科技有限公司)提供的 broker.emqx.io(这里必须给国产软件打广告,他们提供的 MQTTX 客户端是我目前用的最顺手的,Broker 的功能也非常强大,我计划专门出一篇来介绍服务端的搭建)。

然后,也是他们家提供的 MQTTX 客户端 ,用 Electron 实现的,各平台都支持,直接下载即可。

打开 MQTTX 客户端,我们开始一次简单的测试。

  1. 点击左侧侧边栏的 + ,创建一个连接(这个 + ,我认为有点不符合交互逻辑,作为一个创建按钮跟其它的按钮是不同级别的,放在连接列表里面,与新建分组放一起更合理);
  2. 这时候,会跳出一个创建页面,然后随便填一个名称,点击连接即可,如果没遇到网络问题的话,就可以顺利连接上(你看,它们知道你懒,Broker 地址、端口之类的全部帮你填好了,这点也非常值得做技术类产品的我们学习,如何让用户一开始以最低的成本来使用产品);
  3. 现在,我们来创建一个订阅,点击页面中的添加订阅,在弹出的对话框中,填一个随机一点的 topic,比如 test/807739542134,毕竟这是公共的 Broker,避免跟其它人冲突,然后点击确定即可。
  4. 最后,我们来发布一个消息,在左下角,有个输入框提示输入 Topic,我们就输入 test/807739542134,在它下面的内容框里面,输入 {"hellow": "world"},点击它更下面的纸飞机,发送后,你就能看到,接收到了自己给自己发送的消息。

7.jpg

好了,这次就先到这,非常简单的介绍,接下来会尽可能详细介绍 MQTT 的一些概念、原理以及实践应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1543325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RPA使用Native Messaging 协议实现浏览器自动化

RPA 即机器人流程自动化,是一种利用软件机器人或人工智能来自动化业务流程中规则性、重复性任务的技术。RPA 技术可以模拟和执行人类在计算机上的交互操作,从而实现自动化处理数据、处理交易、触发通知等任务。帮助企业或个人实现业务流程的自动化和优化…

基于ssm的医院住院管理系统论文

摘 要 随着时代的发展,医疗设备愈来愈完善,医院也变成人们生活中必不可少的场所。如今,已经2021年了,虽然医院的数量和设备愈加完善,但是老龄人口也越来越多。在如此大的人口压力下,医院住院就变成了一个问…

计算机软考初级含金量高吗?

并不是说软考初级就没有含金量,对于想评初级职称的考生来说还是很有用处的。根据 国人部 发[2003]39号:通过考试获得证书的人员,表明其已具备从事相应专业岗位工作的水平和能力,用人单位可根据工作需要从获得证书的人员中择优聘任…

技术复盘:Flash Memory揭秘(1)

目录 1.Flash基本原理概述 1.1 Non-volatile Memory的分类 1.2 Flash编程\擦除原理 2.小结 1.Flash基本原理概述 1.1 Non-volatile Memory的分类 Flash在嵌入式领域是非常重要的角色,主要用于存储数据代码,为代码的执行提供基础保证等。 实际上&a…

marvelous designer打开发现gizmo(变换控制器)只有一个方向上有面控制器,缺另外两个面控制器

出现这种问题,其实是因为选中了屏幕坐标系 在3D界面下空白处点右键,选择gizmo,然后选择屏幕坐标系之外别的选项就能恢复到常规有多个面的控制器。

不能从所选图层建立3d模型--模大狮模型网

在Revit中,从所选图层直接创建3D模型并不是一个常规的操作方式。通常情况下,你需要手动创建文字或者图形,然后将其转换为3D模型。 如果你有一个平面上的文字或图形,想要将其转换为3D模型,你可以使用以下步骤&#xff1…

【包远程安装运行】SpringBoot+Mysql实现的美食分享菜谱制作平台+演示视频+开发文档(论文模板)

今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的美食分享菜谱制作平台系统,该系统分为前台和后台,多用户分享平台。主要实现了 除脚手架功能以外下面是系统的功能: 前台普通用户:注册、登录、首页、美食…

波奇学Linux:网络接口

127.0.0.1本地回环ip&#xff0c;用于本地测试&#xff0c;不会进行网络通信 TCP是面向连接的&#xff0c;服务器比较被动 需要服套接字监听 listen状态 正常通信默认会进行主机序列和网络序列的转换 TcpServer.cc #pragma once#include<iostream> #include<string…

6、运行时数据区

Java虚拟机在运行Java程序过程中管理的内存区域&#xff0c;称之为运行时数据区。《Java虚拟机规范》中规定了每一部分的作用。 3.1 程序计数器 程序计数器&#xff08;Program Counter Register&#xff09;也叫PC寄存器&#xff0c;每个线程会通过程序计数器记录当前要执行的…

海外舆情监控的重要性以及云手机的推荐

海外市场不仅有着无尽的商机&#xff0c;同时也存在着各种各样的挑战。例如&#xff0c;海外市场舆情的复杂变化给企业带来了潜在风险&#xff0c;尤其在新媒体技术快速发展的时代&#xff0c;舆论对企业品牌形象的影响日益巨大。本文将详细探讨海外舆情监控的重要性以及为大家…

西圣、漫步者、万魔开放式耳机如何?甄选机型实测对比测评

无论是通勤、工作还是休闲时光&#xff0c;耳机总能为我们带来沉浸式的音乐体验。近年来&#xff0c;开放式耳机以其独特的优势逐渐受到市场的青睐&#xff0c;其中西圣、漫步者、万魔等品牌在市场上相当火热&#xff0c;那这三款开放式耳机的实际到底如何&#xff0c;还是有许…

第一周周考技能

文章目录 1月1. 任意输入一个3位整数&#xff08;100~999&#xff0c;包含100与999&#xff09;&#xff0c;判断输入的整数是否是质数&#xff0c;如果是质数则输出是质数&#xff0c;否则输出不是质数2.“降序数”是指一个自然数的低位数字不大于高位数字的数。例如&#xff…

Python 使用 PyQt5 设计一个查询IP对话框程序

当前环境&#xff1a;Win10 x64 Python 3.8.10 PyQt5.15.2 PyQt-tools5.15.9.33 1 打开 designer.exe ,新建一个 Dialog without Buttons , 设计窗体。 C:\Python\Python38-32\Lib\site-packages\qt5_applications\Qt\bin\designer.exe 2 使用命令转换为 py C:\Python\Pyth…

【C++从练气到飞升】06---重识类和对象

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 ⛳️推荐 一、再谈构造函数 1. 构造函数体赋值 2. 初始化列表 每个成员变量在初始化列表中只能出现一次--初始化只能初始…

电饭煲/电磁炉/空调/机顶盒显示驱动芯片特点与相关型号推荐

电饭煲、电磁炉、空调和机顶盒等家用电器通常都包括数码管或LED显示&#xff0c;用于显示时间、温度、设置等信息。这些芯片通常具有多位数码管或LED的支持、亮度控制、多种字符和符号的显示、低功耗设计等功能。 电饭煲、电磁炉、空调和机顶盒等家用电器的显示驱动芯片通常是…

Docker安装配置

1. 安装docker-ce sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum -y install docker-ce sudo systemctl enable docker 2. 设置代理 参照&#xff1a;https://docs.docker.com/config/daemon/systemd/#httpht…

基础篇Redis

基础篇Redis 1.Redis简单介绍 Redis是一种键值型的NoSql数据库&#xff0c;这里有两个关键字&#xff1a; 键值型NoSql 其中键值型&#xff0c;是指Redis中存储的数据都是以key.value对的形式存储&#xff0c;而value的形式多种多样&#xff0c;可以是字符串.数值.甚至json…

C语言入门——使用Visual C++

C语言简介 使用Visual C 语法解释 # include <stdio.h>int main(void){printf("hello,word !");return 0; } 在C语言中&#xff0c;main()函数的返回值通常被用来表示程序执行的状态。return 0;语句是结束main()函数的一种方式&#xff0c;并且它代表了程序正…

C语言字符函数与字符串函数:编织文字的舞会之梦(下)

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看&#xff0c;已成习惯 创作不易&#xff0c;多多支持&#xff01; 目录 七、strncpy的使用以及模拟实现 八、strncat的使用以及模拟实现 九、strncmp的使用以及模拟实现 十、strstr的使用以及模拟…

通过 Elastic AI Assistant for Observability 进行警报管理,最大限度地提高 IT 效率

作者&#xff1a;来自 Elastic Felix Roessel 管理和关联 Elastic Observability 中的信号和警报 随着组织采用日益复杂和互连的 IT 系统&#xff0c;各种监控工具生成的大量警报带来了严峻的挑战 - 我们如何有效地筛选噪音以识别和响应最关键的问题&#xff1f; 事件管理和关…