阿里云服务器连接,阿里云物联网平台接入mqtt

博主:xiaoweixiaowei 2023-01-18 条评论

题目

大家好,超子又和大家见面了,超子我能力有限,水平不高,有什么错误的地方,欢迎板砖。超子今天详解第1个CONNECT报文,本篇文章先从整体上介绍一下CONNECT报文。

CONNECT报文

我们一起看上图红圈所示,CONNECT报文是单向的C->S,所以只能由我们发给阿里云服务器,包含固定报头、可变包头和负载。在使用MQTT 协议时,CONNECT报文必须是第1个发送的,只有CONNECT报文发送成功后,其它报文才被允许发送和接收。而且发送CONNECT报文之前,一定要先成功的建立起同阿里云的TCP连接。

CONNECT报文的作用是配置功能和提交信息,配置功能的任务由可变报头担任,提交信息的任务由负载部分担任,超子先总结一下可变报头的工作任务。

(1)设置协议名:固定内容,协议名是MQTT

(2)设置协议级别 :当前3.1.1版本要求,协议级别是4

(3)清理会话功能设置:先简单理解下,就是是否保留等级1和等级2的离线消息。等你上线后再发给你

(4)遗嘱消息使能设置 :意外掉线时,服务器会推送遗嘱消息给哪些订阅了遗嘱Topic的用户,常用于报警提示

(5)遗嘱消息服务质量等级设置(等级0/1/2):和我们前面文章介绍的服务质量等级是一个概念

(6)遗嘱消息保留功能设置 :如果使能消息保留,服务器必须保留该消息,以便有新用户订阅时发送该消息,如果不使用这个功能,消息只会发给已经订阅的用户,然后就丢弃,如果后面有新用户订阅的话,不给新用户发送。

(7)是否需要提交密码设置 :需不需要服务器验证要用户名

(8)是否需要提交用户名设置 :需不需要服务器验证密码

(9)保活时间设置:范围0~65535秒 ,服务器会清理那些占着茅坑不方便的用户,我们可以通过保活时间设置占着茅坑不方便的时间,如果超出设置值1.5倍的时间,还不方便,就要被服务器踢出来了。如果设置为0,表示可以一直占着茅坑,但是几乎所有的商用服务器,都不会允许这个设置的。

比如使用MQTT连接阿里云物联网平台的时候要注意以下3点,阿里云有特殊要求。

(1)阿里云不支持遗嘱相关的功能

(2)保活时间设置的范围是30~1200秒

(3)阿里云不能匿名登录,必须使能提交密码功能和提交用户名功能

超子再总结一下负载的工作任务。需要提交哪些信息

(1)客户端ID:类比成昵称吧,比如我的头条号叫超子说物联网

(2)用户名:类比一下,登录头条时要输入用户名,不过现在可能都是用手机号做为登录时的用户名

(3)密码:这个好理解,不过现在大家可能不怎么记密码,都是用短信验证码登录

(4)遗嘱Topic:方才我们介绍什么是遗嘱,如果使能了遗嘱功能,就需要提交Topic名称,方便用户订阅

(5)遗嘱信息内容:意外掉线时,服务器给订阅了遗嘱Topic的用户发送的内容

阿里云不支持匿名登录和遗嘱功能,所以负载最终需要提交的内容就是,客户端ID、用户名和密码这3个信息。

The End

发布于:2023-01-18,除非注明,否则均为 主机评测原创文章,转载请注明出处。