阿里云IoT套件中MQTT协议的使用

栏目: 后端 · 发布时间: 6年前

内容简介:阿里云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协议的使用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C# 6.0本质论

C# 6.0本质论

[美] Mark Michaelis(马克·米凯利斯)、[美] Eric Lippert(埃里克·利珀特) / 周靖、庞燕 / 人民邮电出版社 / 2017-2-1 / 108

这是C#领域中一部广受好评的名作,作者用一种易于理解的方式详细介绍了C#语言的各个方面。全书共有21章和4个附录(其中哟2个附录从网上下载),介绍了C#语言的数据类型、操作符、方法、类、接口、异常处理等基本概念,深入讨论了泛型、迭代器、反射、线程和互操作性等高级主题,还介绍了LINQ技术,以及与其相关的扩展方法、分部方法、Lambda表达式、标准查询操作符和查询表达式等内容。每章开头的“思维导图”......一起来看看 《C# 6.0本质论》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具