基于MQTT-WebSocket协议建立连接

MQTT协议(Message Queuing Telemetry Transport),叫做遥信消息队列传输。本节介绍基于WebSocket的MQTT连接,从而帮助WEB浏览器实现基于MQTT物联网通信云平台的长连接。

MQTT连接注意事项

  • 支持ws和wss;
  • 支持最高协议版本MQTT3.1,不支持MQTT5.0;
  • 不支持will、retain 消息;
  • 不支持QoS2;
  • 支持clean session;
  • 同一注册凭证(产品序列号设备序列号设备密码)同时只能有一个设备在线,其它会被踢下线;
  • 支持TLSV1.2 版本的协议来建立安全连接,安全级别高;
  • MQTT-WebSocket使用国际授信TLS根证书,浏览器可以直接使用,也可以从这里下载CA证书
  • MQTT client不能跨Topic订阅或发布消息,只能在自己的所属Topic上订阅或发布消息;

具体流程:

MQTT-WebSocket连接需要先了解设备注册中提到的静态注册和动态注册,获取 ClientIDUserNamePassword

1. MQTT-WebSocket如需使TLS加密传输,使用国际授信TLS根证书,浏览器可以直接使用,也可以从这里下载CA证书

2. 基于javascrip开源库MQTT.jspaho.mqtt.javascript进行开发,MQTT协议详解可以参考MQTT官网

3. MQTT连接

参数 详解
连接域名 mqtt-cn-sh2.iot.ucloud.cn (不同区域连接域名不同,目前仅在上海Region开放)
端口号 80443(使用TLS)
可变报头(variable header):Keep Alive Connect指令中需包含Keep Alive(保活时间)。 取值范围为30至1200秒。如取值不在此区间,平台拒绝连接。建议取值300秒以上,如网络不稳定,设置高一些。
MQTT的Connect报文参数参考静态注册动态注册 以静态注册为例:ClientID:${ProductSN}.${DeviceSN} UserName:${ProductSN}|${DeviceSN}|${authmode} authmode: 静态注册为1;动态注册为2 Password:${DeviceSecret}

4. 连接成功后需要定期发送心跳包保活,设备端在保活时间间隔内,至少需要发送一次报文,如果物联网平台在该间隔内无法收到任何报文,物联网平台会断开连接,设备端需要进行重连。

消息上行及下行

设备连接成功后即可订阅或发布消息,物联网平台支持

示例

使用WebSocket可以便于在WEB浏览器建立MQTT长连接,下载下面的例子双击打开index.html可以体验。

WebSocket Over MQTT WEB页面使用示例下载

WebSocket在线测试工具