内容简介:阿里云IoT套件中MQTT协议的使用
今天,阿里云给我发来邮件,说我申请的IoT套件已经可以申请了,虽然我不记得自己什么时候申请过了,但请我试用就试用一下呗。我看这个阿里云的这个东东有两个节点,一个是“华东2节点”,还有一个是“杭州节点”。这两个节点的接入方法好像有什么不太一样,但具体自己也没有搞太清楚,由于自己是分配在了“华东2节点”,所以自己只研究了华东2节点。
至于建产品,建设备什么的我就不说了,官方的文档这些还是说的挺清楚的,我想说的主要问题是aliyun的MQTT协议与公开的MQTT协议有什么不同。在阅读此文章之前,我默认的认为读者是有一定的MQTT协议的认知的,如果对这个协议还不太清楚,请参照 MQTT 。MQTT是一种公开的协议,大家都知道连接到一个MQTT的Broker上,一般需要5点信息:主机,端口,clientID,userName和password(当然,部分服务器并不对clientID、userName和password中的一项或几项进行约束)。
不同的报务商提供服务时一般都在这5点的做文章。比方说,在文章 通过Paho客户端接入OneNet 中就介绍了中国移动的MQTT协议是使用固定的主机和端口,然后用产品、设备的id或鉴权信息来填充clientID、userName和password。OneNet的这种做法是一种比较常见,比较简单的解决方案。但其也存在一定的信息泄漏的风险。而阿里去采用了一种相对更加安全的方案。
阿里云的接入分成了两步走,分别叫做设备认证和接入协议。
目录
- 三、阿里云使用此种方法的优劣
- 四、阿里云现在的SDK支持
一、设备认证
设备认证的过程在本质上就是通过控制台上的productKey、deviceName、diviceID和deviceSecret来获取上面我所说的5项内容的过程。具体细节请参照: 设备认证_设备基于MQTT接入_设备端接入手册 。从参考文章上看,通过https请求就可以得到上面5个参数中的4个,而对clientID没有进行特别的要求。但在给出的SDK代码中,看到官方给出的对clientID的处理方式是:
if (NULL == puser_info->pubKey) { //Append string "::nonesecure::" to client_id if TCP connection be used. //根据前文代码,如果不使用加密方式,pubKey就为NULL, //如果使用加密方式,pubKey为公钥匙 //此时client_id为device_id+"::nonesecure::" ret = snprintf(puser_info->client_id, CLIENT_ID_LEN, "%s%s", pdevice_info->device_id, "::nonesecure::"); } else { //此时为加密方式,client_id为device_id ret = snprintf(puser_info->client_id, CLIENT_ID_LEN, "%s", pdevice_info->device_id); }
既然文档中没有明确要求clientID,应该是可以任意设置的,但在没有特殊要求的时候建议使用官方的方式。
二、接入协议
有了第一步的铺垫,第二步就相当简单了,这里不再多说。
三、阿里云使用此种方法的优劣
优势主要有两点:
1、安全性的提高。多了一次设备认证的过程,安全性有明显提高。
2、便于服务器升级。如果连接服务器,端口,userName,password更改甚至都不需要升级程序,只要升级设备认证服务器即可。
劣势:
程序的通用性降低,因为多了一次设备认证,多了一次请求。
四、阿里云现在的SDK支持
刚才又仔细的看了一下“华东2节点”的SDK支持,可以说是非常不完善的,毕竟是刚上线的,可能后期还会再更新。
现在的SDK只支持linux C和Java,而这两种对我们来说是远远不够的,主要是需要在单片机中的支持才更好。
当然,他的“杭州节点”里面SDK支持的平台更多一些,也支持了一些主流的嵌入式操作系统。依此来看,以后阿里云肯定会实现这些SDK的,毕竟现在还在测试阶段,正式发布相信会好很多。但“杭州节点”也没有实现自己最喜欢的mbed平台,看后期正式上线后有没有支持吧,如果没有,我会想办法移植一个给大家使用。现在平台还没有完全稳定,所以先不着急。
以上所述就是小编给大家介绍的《阿里云IoT套件中MQTT协议的使用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 使用 .NET Core 封裝 NuGet 套件並輸出靜態檔案
- LibreOffice 7.1 发布,开源办公套件
- LibreOffice 6.3 发布,开源办公套件
- LibreOffice 6.4.2 发布,开源办公套件
- LibreOffice 6.4.3 发布,开源办公套件
- LibreOffice 6.3.6 发布,开源办公套件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C# 6.0本质论
[美] Mark Michaelis(马克·米凯利斯)、[美] Eric Lippert(埃里克·利珀特) / 周靖、庞燕 / 人民邮电出版社 / 2017-2-1 / 108
这是C#领域中一部广受好评的名作,作者用一种易于理解的方式详细介绍了C#语言的各个方面。全书共有21章和4个附录(其中哟2个附录从网上下载),介绍了C#语言的数据类型、操作符、方法、类、接口、异常处理等基本概念,深入讨论了泛型、迭代器、反射、线程和互操作性等高级主题,还介绍了LINQ技术,以及与其相关的扩展方法、分部方法、Lambda表达式、标准查询操作符和查询表达式等内容。每章开头的“思维导图”......一起来看看 《C# 6.0本质论》 这本书的介绍吧!