MQTT协议基础学习

news2025/1/22 8:06:32

MQTT是什么

MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。

MQTT基本原理

MQTT服务端

  • MQTT服务端通常是一台服务器,可对MQTT信息的接收、储存、处理和发送。
  • 负责将MQTT客户端发送来的信息传递给其他MQTT客户端(需要客户端订阅)。确保客户端之间的通讯顺畅,保证MQTT消息得以正确接收和准确投递。
  • 负责管理MQTT客户端。

MQTT客户端

  • 发布行为——向服务端发布信息。
  • 接收行为——从服务端收取信息。需要先要向服务端“订阅”信息(即告诉服务端需要哪些信息)。
  • 既可以作为信息发布者也可以同时作为信息订阅者。

MQTT主题

  • MQTT服务端在管理MQTT信息通讯时,就是使用“主题”来控制的。
  • 当某客户端向主题发送信息后,服务端会首先检查都有哪些客户端订阅了这一主题,再将信息转发给订阅了该主题的客户端。

MQTT 发布/订阅 特性

  • 相互可独立。MQTT客户端是一个个独立的个体,它们无需了解彼此的存在,依然可以实现信息交流。
  • 空间可分离。MQTT客户端在通讯必要条件是连接到了同一个MQTT通讯网络。这个网络可以是互联网或者局域网。只要客户端联网,无论他们远在天边还是近在眼前,都可以实现彼此间的通讯交流。
  • 时间可异步。MQTT客户端在发送和接收信息时无需同步。当客户端离线后,MQTT服务端可以将主题的新信息保存,待客户端再次上线后,服务端再将信息推送给客户端。

连接MQTT服务端

第一步:发送连接请求

MQTT客户端要想连接服务端,首先要向服务端发送CONNECT报文。如果此CONNECT报文的格式或内容不符合MQTT规范,则服务器会拒绝客户端的连接请求
CONNECT报文所包含的信息内容

  • CONNECT数据报文的作用:告诉服务端,客户端与服务端通信的模式。
    • clientId:客户端ID。同一个服务端不可重复,客户端身份标识
    • cleanSession:清除会话。true,告诉客户端不要保存任何会话内容;false,告诉客户端需要保存会话内容。客户端收到信息后需向服务端反馈“我已收到”,若客户端未反馈,服务端会保存会话内容并重复发送。
      • 请注意,如果需要服务端保存重要报文,光设置cleanSession 为false是不够的,还需要传递的MQTT信息QoS级别大于0。
    • keepAlive:心跳时间间隔(单位秒)。定期告诉服务端客户端的连接状态。

第二步:连接确认

MQTT服务端收到客户端连接请求后,会向客户端发送连接确认
CONNACK报文所包含的信息内容

  • CONNACK数据报文的作用:向客户端发送连接确。
    • returnCode:连接返回码。说明连接情况。数字0,表示成功连接。
      状态码
    • sessionPresent:当前会话。客户端与服务端cleanSession为false时,服务端会保存客户端未确认收到的信息。true:服务端告诉客户端有未确认的消息;false:表示客户端所有消息都已正常发送并接收。

特别感谢
教程来源: 太极创客

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

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

相关文章

骨传导蓝牙耳机哪款好?这五款高品质骨传导耳机不可错过!

随着耳机的使用频率增加,骨传导耳机也走进了越来越多人的视野里,而传统的入耳式耳机,常常以使用场景少、佩戴会疼痛、容易引发耳部疾病等原因逐渐被骨传导耳机所替代,所以现在有越来越多的人去选择骨传导耳机,但要注意…

【Leetcode】349. 两个数组的交集

题意 给定两个数组,编写一个函数来计算它们的交集。 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 思路 这道题目,主要要学会使用一种哈希数据结构:unordered_set,这个数据结构可以解决…

供应链云仓系统:实现采购、销售、收银、路线规划一体化,高效协同,再创商业价值!

供应链云仓系统是一款集合采购、销售、收银、路线规划等多项功能的软件系统,旨在帮助企业实现业务流程的全面自动化和协同化。通过该系统,企业可以轻松管理供应链的各个环节,提高运营效率,降低成本,实现商业价值的最大…

标讯通:无代码开发连接API,为广告推广与客服系统集成新商机

无代码开发连接API的新趋势——标讯通 招投标已成为大多数企业获取业务的主要途径之一。然而,由于招标信息平台分散,平台发布的招标信息更是有数十万条,单纯依赖人工查询,往往过程繁琐,效率低下。在这样的背景下&…

java智能在线考试系统源码 基于SpringBoot+Vue开发

java智能在线考试系统源码 基于SpringBootVue开发 环境介绍 语言环境:Java: jdk1.8 数据库:Mysql: mysql5.7 应用服务器:Tomcat: tomcat8.5.31 开发工具:IDEA或eclipse 开发技术:SpringbootVue 项目简介&…

再也不愁了!有了它在家也能轻松制作个人作品

​在家就能轻松制作个人作品,这不仅节省了时间和精力,还降低了成本。无论你是想要制作一个短片、设计一款App、还是写一篇文章,这个网站都能提供专业的支持和帮助。 1.在浏览器搜索FLBOOK在线制作电子杂志平台,点击登录与注册 2.点…

CV计算机视觉每日开源代码Paper with code速览-2023.11.2

精华置顶 墙裂推荐!小白如何1个月系统学习CV核心知识:链接 点击CV计算机视觉,关注更多CV干货 论文已打包,点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【目标检测】Re-Scoring Using Image-Language Similarit…

ubuntu20.04 安装cudnn

中文地址是.cn:cuDNN 历史版本 | NVIDIA 开发者 英文地址是.com:cuDNN 历史版本 | NVIDIA 开发者 1、下载cudnn:cudnn-local-repo-ubuntu2004-8.8.1.3_1.0-1_amd64.deb 解压并安装:sudo dpkg -i cudnn-local-repo-ubuntu2004-8.8…

配件管理系统软件哪家好?如何优化企业设备管理,提高运营效率?

随着企业运营的日益复杂化,设备的维修维护与管理已成为企业生产运营中的重要环节。在这个过程中,配件的管理往往成为一项极具挑战性的任务。如何有效地管理备用的配件,缩短维修的时间,同时防止库存积压,是许多企业目前…

有什么好用的CRM客户管理系统?推荐这5大高口碑的CRM系统!

有什么好用的CRM客户管理系统?推荐这5大高口碑的CRM系统! 好用的CRM客户管理系统: ①需要进行精细化管理 ②需要专业的管理工具 ③最好能够做到和erp系统和oa系统的集成 授人以鱼不如授人以渔,在给题主推荐crm系统之前&#…

Java前后端分离的在线考试系统源码

Java前后端分离的在线考试系统源码 技术栈 1,SpringBoot 2,Mybatis-plus 3,MySQL 5.7 4,Vue全家桶 5,ElementUI 6,Redis 7,Swagger 8,阿里云OSS 9,Log4j 考…

Linux网络编程04

更高效的零拷贝 发送方过程零拷贝 sendfile 发送文件方的零拷贝,虽然之前我们就可以使用mmap来实现零拷贝但是存在一个方法sendfile也可以直接实现数据从内核区发送到网络发送区socket 直接把内核里面你的文件数据不经过用户态,直接发送给另外一个文件…

成集云 | 电商平台、ERP、WMS集成 | 解决方案

电商平台ERPWMS 方案介绍 电商平台即是一个为企业或个人提供网上交易洽谈的平台。企业电子商务平台是建立在Internet网上进行商务活动的虚拟网络空间和保障商务顺利运营的管理环境;是协调、整合信息流、货物流、资金流有序、关联、高效流动的重要场所。企业、商家…

多功能声学综合馆:空间的“膜法师”

建筑是文明的承载者,是历史的见证者,也是城市的象征。但在现代都市中,我们不仅需要“固定”的建筑,更需要灵活与多功能性的空间。而这,正是多功能声学综合馆为我们带来的“膜法”。 不仅仅是建筑,更是艺术的…

盘点13种即插即用的涨点模块,含注意力机制、卷积变体、Transformer变体

朋友们,你们想发paper的时候有没有被创新点、改模型、改代码折磨过?今天我教你们一个前期又快又省事的方法,就是用即插即用的模块“缝合”,加入自己的想法快速搭积木炼丹。 这种方法可以简化模型设计,减少冗余工作&am…

AI技术再刷屏!明星集体“说”外语,有何风险?

近日,一段美国歌手泰勒斯威夫特“说”中文的短视频在网络刷屏,引发热议。 视频中,泰勒斯威夫特“说”着流利中文,音色和讲母语时的音色类似,甚至连口型都能对上。 类似的视频还有很多外国人“说”地道中文、很多中国…

智慧班牌系统全套解决方案 智慧校园云平台

随着智能的不断发展,学校也有了更多智能化的应用,传统教育信息化水平低、校园和班级文化建设、日常教学管理缺少有力的数字抓手,家校通缺乏渠道,无法及时掌握孩子在校情况,学校教育和家庭教育出现断层,存在…

如何本地搭建SeaFile私有云盘并实现远程连接

文章目录 1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 现在我们身边的只能设备越来越多&#xff0c…

剑指JUC原理-13.线程池

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…

【NI-DAQmx入门】NI-DAQmx之MATLAB/SIMULINK支持

Data Acquisition Toolbox™ 提供用于配置数据采集硬件、将数据读入 MATLAB 和 Simulink 以及将数据写入 DAQ 模拟和数字输出通道的应用程序和函数。该工具箱支持多种 DAQ 硬件,包括来自 National Instruments™ 和其他供应商的 USB、PCI、PCI Express 、PXI 和 PXI…