失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > MQTT协议接入 >

阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > MQTT协议接入 >

时间:2019-05-28 18:19:57

相关推荐

阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > MQTT协议接入 >

MQTT-WebSocket连接通信

更新时间:-09-08 16:57:21

编辑我的收藏

本页目录

背景信息操作步骤

物联网平台支持基于WebSocket的MQTT协议。您可以首先使用WebSocket建立连接,然后在WebSocket通道上,使用MQTT协议进行通信,即MQTT over WebSocket。

背景信息

使用WebSocket方式主要有以下优势:

使基于浏览器的应用程序可以像普通设备一样,具备与服务端建立MQTT长连接的能力。WebSocket方式使用443端口,消息可以顺利穿过大多数防火墙。

操作步骤

证书准备。

WebSocket可以使用ws和wss两种方式,ws就是普通的WebSocket连接,wss就是增加了TLS加密。如果使用wss方式进行安全连接,需要使用和TLS直连一样的根证书。

客户端选择。

直接使用官方客户端,只需要替换连接URL即可。其他语言版本客户端或者是自主接入,请参考开源MQTT客户端参考,使用前请阅读相关客户端的说明,是否支持WebSocket方式。

连接说明。

使用WebSocket方式进行连接,区别主要在MQTT连接URL的协议和端口号,MQTT连接参数和TCP直接连接方式完全相同,其中要注意securemode参数,使用wss方式连接时securemode=2,使用ws方式连接时securemode=3。

接入域名: 您购买的实例的接入域名,请在物联网平台控制台实例管理页面,单击实例对应的查看,进入实例详情页查看。公共实例的接入域名:${YourProductKey}.iot-as-mqtt.${YourRegionId}.。 其中: ${YourProductKey}:请替换为设备所属产品的的ProductKey。可从物联网平台控制台设备详情页获取。${YourRegionId}:请参见地域和可用区替换为您的Region ID。端口:443。可变报头(variable header):Keep Alive。

Connect指令中需包含Keep Alive(保活时间)。保活心跳时间取值范围为30至1200秒。如果心跳时间不在此区间内,物联网平台会拒绝连接。建议取值300秒以上。如果网络不稳定,将心跳时间设置高一些。

设备端在保活时间间隔内,至少需要发送一次报文,包括PING请求。

如果物联网平台在保活时间内无法收到任何报文,物联网平台会断开连接,设备端需要进行重连。

MQTT的Connect报文参数如下:

mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"mqttUsername: deviceName+"&"+productKeymqttPassword: sign_hmac(deviceSecret,content)sign签名需要把以下参数按字典序排序后,再根据signmethod加签。content=提交给服务器的参数(productKey,deviceName,timestamp,clientId), 按照字母顺序排序, 然后将参数值依次拼接

其中, clientId:表示客户端ID,建议mac或sn,64字符内。timestamp:表示当前时间毫秒值,可选。mqttClientId:格式中||内为扩展参数。signmethod:表示签名算法类型。securemode:表示目前安全模式,可选值有2 (wss协议)和3(ws协议)。

参考示例,如果预置前提如下:

clientId = 12345,deviceName = device, productKey = pk, timestamp = 789,signmethod=hmacsha1,deviceSecret=secret

使用ws方式 连接域名

ws://pk.iot-as--:443

连接参数

mqttclientId=12345|securemode=3,signmethod=hmacsha1,timestamp=789|mqttUsername=device&pkmqttPasswrod=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString();

使用wss方式 连接域名

wss://pk.iot-as--:443

连接参数

mqttclientId=12345|securemode=2,signmethod=hmacsha1,timestamp=789|mqttUsername=device&pkmqttPasswrod=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString();

建议您使用设备端SDK接入物联网平台。如果您自行开发接入,可参考MQTT连接签名示例。

如果觉得《阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > MQTT协议接入 >》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。