MQTT--入门 续
1、消息模型:
MQTT是一种基于代理的发布/订阅的消息协议。提供一对多的消息分发,解除应用程序耦合。一个发布者可以对应多个订阅者,当发布者发生变化的时候,他可以将消息一一通知给所有的订阅者。这种模式提供了更大的网络扩展性和更动态的网络拓扑。 
2、消息质量
MQTT提供三种质量的服务:
1)至多一次,可能会出现丢包的现象。使用在对实时性要求不高的情况。这一级别可应用于如下情景,如环境传感器数据,丢失一次读记录无所谓,因为很快下一次读记录就会产生。
2)至少一次,保证包会到达目的地,但是可能出现重包。
3)正好一次,保证包会到达目的地,且不会出现重包的现象。这一级别可用于如计费系统等场景,在计费系统中,消息丢失或重复可能会导致生成错误的费用。
3、主题名称
主题名称(Topic name)用来标识已发布消息的信息的渠道。订阅者用它来确定接收到所关心的信息。它是一个分层的结构,用斜线“/”作为分隔符。有两种通配符可以在主题发布、订阅时使用:“#”和“+”。前者可以通配多层结构,而后者只能通配一层结构。例如一个topic : “a/b/c”,则“a/+/c”和“a/#”都可以和它相等。发布不支持模糊匹配,必须是确定的主题。
4、遗属
当一个客户端断开连接的时候,它希望客户端可以发送它指定的消息。该消息和普通消息的结构相同。通过设置该位并填入和信息相关的内容即可。
6、消息类型
| 名字 | 值 | 流动方向 | 描述 |
|---|---|---|---|
| Reserved | 0 | 禁止 | 保留 |
| Connect | 1 | 客户端到服务端 | 客户端到服务端的连接请求 |
| ConnACK | 2 | 服务端到客户端 | 服务端对连接请求的响应 |
| Publish | 3 | 两个方向都允许 | 发布消息(QoS0) |
| puback | 4 | 两个方向都允许 | 对QoS1发布消息的回应 |
| pubRec | 5 | 两个方向都允许 | 收到发布消息(QoS2保证传输第一步) |
| pubRel | 6 | 两个方向都允许 | 释放发布消息(QoS2保证传输第二步) |
| pubComp | 7 | 两个方向都允许 | 完成发布消息(QoS2保证传输第三步) |
| subscribe | 8 | 客户端到服务端 | 客户端订阅请求 |
| subBack | 9 | 服务端到客户端 | 订阅请求的确认 |
| unsubscribe | 10 | 客户端到服务端 | 客户端取消订阅请求 |
| unsubBack | 11 | 服务端到客户端 | 取消订阅请求确认 |
| pingReq | 12 | 客户端到服务端 | Ping(心跳)请求(保持连接) |
| pingResp | 13 | 服务端到客户端 | Ping(心跳)响应 |
| disconnect | 14 | 客户端到服务端 | 客户端断开连接 |
| reserved | 15 | 禁止 | 保留 |
开发一个MQTT库需要提供如下命令:
Connect :当一个TCP/IP套接字在服务器端和客户端连接建立时需要使用的命令。
publish : 是由客户端向服务端发送,告诉服务器端自己感兴趣的Topic。每一个publishMessage 都会与一个Topic的名字联系在一起。
pubRec: 是publish命令的响应,只不过使用了2级QoS协议。它是2级QoS协议的第二条消息
pubRel: 是2级QoS协议的第三条消息
publComp: 是2级QoS协议的第四条消息
subscribe: 允许一个客户端注册自已感兴趣的Topic 名字,发布到这些Topic的消息会以publish Message的形式由服务器端发送给客户端。
unsubscribe: 从客户端到服务器端,退订一个Topic。
Ping: 有客户端向服务器端发送的“are you alive”的消息。
disconnect:断开这个TCP/IP协议
3、MQTT服务端和客户端
https://github.com/mqtt/mqtt.github.io/wiki/servers
https://github.com/mqtt/mqtt.github.io/wiki/libraries
MQTT--入门 续的更多相关文章
- MQTT入门1 -- mosquitto 安装
原文链接:https://www.cnblogs.com/NickQ/p/9247638.html MQTT入门1 -- mosquitto 安装 简介: MQTT(Message Queuing T ...
- (转)MQTT 入门介绍
原文链接:https://blog.csdn.net/qq_2887... MQTT 入门介绍 一.简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测 ...
- Mqtt入门:在线调试连接阿里云
近期课设需要做个东西,我想要做个上位机更好的显示. 但是一开始学习一样东西,听没头绪的,不知道从哪里入手,尝试过去B站找视频看,但是感觉视频讲的都是基础的东西,不是说人家up主讲的不好,只是对于入门, ...
- MQTT——入门介绍
笔者相信大家对HTTP一定不能陌生."HTTP协议的三次握手四次挥手"相信也略有耳闻.HTTP协议的优势相信大家都明白.不然他不会这流行.然而这并不能忽略他的缺点.最大的特点就是无 ...
- MQTT入门篇
物联网(Internet of Things,IoT)最近曝光率越来越高.虽然HTTP是网页的事实标准,不过机器之间(Machine-to-Machine,M2M)的大规模沟通需要不同的模式:之前的请 ...
- Android Apollo MQTT入门
一.Apache Apollo服务器其实是一个消息中转站 下载地址 http://activemq.apache.org/apollo/download.html 服务搭建方式,参看博客Android ...
- MQTT 入门介绍——菜鸟教程
一.简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级& ...
- MQTT入门介绍
一简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级&q ...
- MQTT 入门介绍
一.简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级& ...
- MQTT入门2 -- “Error: Invalid password hash for user nick.”和“Connection Refused: not authorised.”
原文地址:https://www.cnblogs.com/NickQ/p/9277315.html 问题描述: 搭建好mosqitto环境后,利用无密码验证方式,成功通过测试. 但修改配置文件将匿名访 ...
随机推荐
- 解决Django的admin界面中文乱码
解决Django的admin界面中文乱码 问题陈述 最近在做一个很小的Django项目时,使用了自带的sqlite作为数据库.后台admin界面在显示中文数据时,总会遇到乱码.这里截取一小部分代码: ...
- jquery做一个表单验证
正则表达式的写法: var re=new RegExp('规则', '可选参数');var re=/规则/参数;(这个最常用) 正则表达式的规则 和其他语言的正则表达式规则一样,可以参考我的另一边博文 ...
- Selenium2+python自动化16-alert\confirm\prompt【转载】
前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决. alert\confirm\prompt ...
- 使用Vagrant打造Linux开发环境
1.安装Oracle VM VirtualBox.vagrant,安装完成需重启电脑 Oracle VM VirtualBox安装包下载:https://www.virtualbox.org/wiki ...
- (6)sql/puls
host 在sql/puls中使用cmd或linux操作系统的命令
- APP专项测试 | 内存及cpu
命令: adb shell dumpsys meminfo packagename 关注点: 1.Native/Dalvik 的 Heap 信息 具体在上面的第一行和第二行,它分别给出的是JNI层和 ...
- android利用adb shell查看activity的栈
Android中怎么查看应用的activity栈? 1. 进入adb shell 2.可以直接输入dumpsys ,可以查看device的一些信息如 3.也可以直接输入 dumpsys activit ...
- jsp笔记1(基本原理与语法)
web.xml文件配置管理的范围: 1.配置jsp 2.配置和管理Servlet 3.配置和管理Listener 4.配置和管理Filter 5.配置标签库 6.配置jsp属性 7.配置和管理JAAS ...
- A标签几种状况下的样式问题
正常状态下的a标签是这样的. 去掉下划线只需要在样式里面加入a{text-decoration:none;}或者<a href="www.kanbuchuan.com"sty ...
- [置顶]
python3 django models保存filefiled字段统一目录、不修改文件名的方法
最经编写一个model时处理filefiled,使用post_form.save()进行新增和编辑文件保存位置不统一,如果出现重复文件名重复的话,上传文件名会被改名. 现有代码如下: models.p ...