MQTT-WebSocket连接通信

更新时间:2020-10-21 15:13:47

编辑我的收藏

本页目录

  • 背景信息
  • 操作步骤

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

背景信息

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

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

操作步骤

  1. 证书准备。

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

  2. 客户端选择。

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

  3. 连接说明。

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

    • 接入域名:

      • 对于您购买的实例,接入域名请在物联网平台控制台,找到对应的实例,单击实例进入实例详情查看。
      • 公共实例的接入域名:${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com。 其中:
        • ${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+"&"+productKey
      mqttPassword: 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-mqtt.cn-shanghai.aliyuncs.com:443
      • 连接参数
        mqttclientId=12345|securemode=3,signmethod=hmacsha1,timestamp=789|
        mqttUsername=device&pk
        mqttPasswrod=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString(); 
    • 使用wss方式
      • 连接域名

        wss://pk.iot-as-mqtt.cn-shanghai.aliyuncs.com:443
      • 连接参数
        mqttclientId=12345|securemode=2,signmethod=hmacsha1,timestamp=789|
        mqttUsername=device&pk
        mqttPasswrod=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString();

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

MQTT-WebSocket连接通信相关推荐

  1. 使用 WebSocket 连接 MQTT 服务器

    近年来随着 Web 前端的快速发展,浏览器新特性层出不穷,越来越多的应用可以在浏览器端通过浏览器渲染引擎实现,Web 应用的即时通信方式 WebSocket 也因此得到了广泛的应用. WebSocke ...

  2. tt协议号服务器,TTIot: TTIoT云端物联网Iot组件;面向JAVA;netty;mqtt;异步推送;以事件为驱动;为设备提供安全可靠的连接通信能力;...

    TTIoT云端物联网组件;面向JAVA;以事件为驱动;为设备提供安全可靠的连接通信能力 TTIoT简介 TTIOT的Broker采用MQTT协议与设备进行交互,可以应用在数据采集.能源监控.智能生活. ...

  3. 【微信小程序控制硬件⑧ 】微信小程序以 websocket 连接阿里云IOT物联网平台mqtt服务器,封装起来使用就是这么简单!(附带Demo)

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

  4. websocket连接mqtt实现发布及订阅主题

    2019独角兽企业重金招聘Python工程师标准>>> 环境:linux(ubuntu.Centos7),websocket,mosquitto-1.4.10,libwebsocke ...

  5. 支付宝小程序使用MQTT over WebSocket连接阿里云IoT物联网平台

    前言 之前写了一篇微信小程序使用MQTT over WebSocket连接阿里云IoT物联网平台,介绍了如何使用mqtt.js在微信小程序上连接mqtt服务器,文中顺带提了mqtt.js是支持支付宝小 ...

  6. 浏览器WebSocket连接apollo的MQTT实现消息推送(WEB系统微信扫码登录)

    序 一直就想搭建消息队列的,因为目前业务发展还没有到这块,一直没有搭建.刚好今天接到的一个需求是web系统实现微信扫码登录,另外我们的微信对接是统一的中台接口对接,所以我们没办法做到回调我们的web业 ...

  7. 微信小程序使用MQTT.js连接阿里云IoT物联网平台

    官方已经开源了一个SDK版本,也是基于mqtt.js,进行了各种封装: https://github.com/aliyun/alibabacloud-iot-device-sdk · 阅读以下内容需要 ...

  8. websocket 连接本地端口_聊聊 WebSocket,还有 HTTP

    还记得曾经风靡一时的 QQ 秀聊天室吗?那时,还在上初.高中的我们,QQ 是最常用的聊天交友工具:而 QQ 秀聊天室的出现打破了只能按条件查找好友的局限性,大家可以随意进入聊天室房间,进行在线聊天.怀 ...

  9. 使用Nginx代理和转发Websocket连接

    1.Websocket 简介 WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信--允许服务器主动发送信息给客户端. 2.Nginx 简介 ...

最新文章

  1. 【Ubuntu】安装Ubuntu+Win双系统后,每次开机默认是进入Ubuntu,如何设置成默认进入Win?
  2. 【阿里妈妈营销科学系列】第三篇:受众沟通和品牌认知评价
  3. 前端学习(1909)vue之电商管理系统电商系统之渲染修改用户的请求
  4. Oracle基础语句
  5. TextRank、BM25算法提取关键字、文章自动摘要优秀文章保存
  6. C语言,利用const常量解决圆的体积和面积。
  7. python:就喜欢看你看不惯我又干不掉我的样子
  8. 每天一点正则表达式复习(二)
  9. 设计模式在游戏中的应用--模板方法(七)
  10. UE4官方文档踩坑:FPS示例2.7 UCameraComponent
  11. WhereHows 安装
  12. IFIX组态----安全与权限配置
  13. 漫画聚合阅读器Tachidesk
  14. 浅谈Windows XP系统漏洞的封堵
  15. html css齿轮滚动特效,CSS_纯CSS3实现滚动的齿轮动画效果,纯CSS写的齿轮效果。支持chrome - phpStudy...
  16. linux 命令行高亮显示
  17. 肿瘤靶向性红细胞膜包裹叶酸修饰的PLGA纳米粒|巨噬细胞膜包裹的PEG-PLGA载雷公藤红素纳米粒
  18. 提高吞吐就要减少操作次数
  19. 这网站,教大家仿 100 多个知名网站!
  20. 佳能Canon FAX-L150 打印机驱动

热门文章

  1. Python程序设计读者群成立通知
  2. python的基本语法if语句_Python基础之条件控制操作示例【if语句】
  3. java 对象查找_通过Java中的参数集查找最合适的对象
  4. 设置最小值_WELSIM中设置有限元计算结果的最大最小值
  5. 2021江苏淮安高考成绩查询,2021江苏公务员考试成绩查询入口(淮安)
  6. C++新特性探究(八):初始化列表(Initialization List)再探究
  7. cytoscape插件下载_Cytoscape
  8. python json转csv_python – 如何将JSON转换为CSV?
  9. 安徽省农商行计算机类考试,2017安徽农商行备考:计算机的系统组成
  10. github ssh 配置_怎么给Git配置多个SSH Key?