阿里云物联网套件(iot)设备间通信(M2M)在web端的实践
npm install --save mqtt
然后在main.js导入
import mqtt from 'mqtt'
将mqtt挂载到Vue全局
Object.defineProperty(Vue.prototype, 'mqtt', {value: mqtt});
这时就可以在全局使用mqtt了,于是在App.vue中使用mqtt,由于之前逻辑是nodejs进行连接,那么做签名和HTTPS认证都是在服务端进行的,现在挪到web端流程改为由后端进行签名和HTTPS,前端请求后端接口返回必要字段进行mqtt连接(这里的必要字段包括mqtt连接需要的clientId,username,password。username对应的返回值为iotId,password对应的返回值为iotToken),拿到后端HTTPS认证之后的返回值前端进行mqtt连接:(示例)
var host = `ws://${productKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com:443`; //这里需要注意,在服务端是基于TCP的连接(var host = `mqtt://${productKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883`;),而在web端需要是基于websocket的连接,这个地方的坑踩了两天o(╥﹏╥)o
var options = {
clientId: clientId, //请求后端返回的clientId
username: iotId, //后端HTTPS认证返回的iotId
password: iotToken //后端HTTPS认证返回的iotToken
}
var client = this.mqtt.connect(host, options); //mqtt连接
client.on('connect', function(){
//设备连接成功
client.subscribe(topic); //进行主题的订阅
})
client.on('error', function(){
//连接出错
})
client.on('close', function(){
//连接断开
//client.end(); //结束连接
//client = null; //将client对象置空
})
client.on('message', function(topic, message){
//topic: 主题 message: 内容
//收到消息这里的message是buffer,使用toString()转换为字符串
})
{
toDevice: 'deviceB', //这里值为需要发送的设备deviceName
data: data //这里data为客户端之间约定的数据,可以为任意对象,只有大家约定好就行
}
4.设备deviceB订阅/产品key/deviceB/m2m,(这里订阅的主题为deviceB自身),将收到如下格式数据:
{
fromDevice: 'deviceA',
toDevice: 'deviceB',
messageId: '',
data: data //deviceA发来的data
}
//在连接时订阅自身topic
client.subscribe(`/${productKey}/deviceA/m2m`); 在连接或者收到消息时,当前设备为deviceA:
var msgObj = {
toDevice: 'deviceB',
data: data //约定的data
}
client.publish(`/${productKey}/deviceA/m2m`);
以上为物联网套件M2M的关键代码。
阿里云物联网套件(iot)设备间通信(M2M)在web端的实践的更多相关文章
- 【物联网云端对接-2】通过MQTT协议与阿里云物联网套件进行云端通信
在<程序员>杂志2017.4刊上,曾写过一篇<微软百度阿里三大物联网平台探析>,上面曾介绍了阿里云物联网套件的一些内容,在写该篇文章的时候,凌霄物联网网关还无法对接到此平台( ...
- 《ServerSuperIO Designer IDE使用教程》- 6.增加与阿里云物联网(IOT)对接服务,实现数据交互。发布:v4.2.4 版本
v4.2.4 更新内容:1.增加了对接阿里物联网平台的服务.下载地址:官方下载 6. 增加与阿里云物联网(IOT)对接服务,实现数据交互 6.1 概述 为了满足业务系统数据上云的要求,Se ...
- nodejs连接阿里云物联网套件(mqtt)
文档地址:https://help.aliyun.com/document_detail/73742.html 连接方法:先HTTPS认证再连接 /* *阿里云物联网套件nodejs连接示例 *C ...
- 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程
在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:2. IoT 客户端
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:7. 服务调用
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:1. 连接阿里云物联网
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:3. 订阅Topic与响应Topic
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:4. 设备上报属性
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
随机推荐
- 从零开始搭建Webpack+react框架
1.下载node.js Node.js官网下载 , 安装: 安装成功后在控制台输入node -v 可查看当前版本: $ node -v v10.15.0 输入npm -v查看npm版本: $ npm ...
- 维修数列 Splay(这可能是我写过最麻烦的题之一了。。。用平衡树维护dp。。。丧心病狂啊。。。。)
题目来源BZOJ1500 这题的思路: 1.这题的话,稍微会splay的人,一般前面四个都不是问题..主要是最后的一个,要你在修改的同时要维护好最大字段和... 2.最大字段和其实就是区间合并.具体操 ...
- js中字节B转化成KB,MB,GB
function change(limit){ var size = ""; if(limit < 0.1 * 1024){ //小于0.1KB,则转化成B size = l ...
- css属性应用bug大杂烩(后续继续更新)
一.Flex布局使用时的坑: 1.常见的左右分布的flex布局中,左侧给定宽度,右侧占满剩余空间,但当右侧中文字内容很多时,会挤占左侧空间,时左侧不能按照定宽显示. <style> .fa ...
- 使用HUI-admin过程中,返回上级页面并刷新
非常简单的js self.location=document.referrer;
- Python turtle安装和使用教程
1 安装turtle Python2安装命令: pip install turtule Python3安装命令: pip3 install turtle 因为turtle库主要是在Python2中使用 ...
- unity中使用www的库读取数据里面的数据
//使用www的库,读取数据里面的数据 string factoryControllerUrl = "http://IP地址:8086/DatabaseServerCode/GangShan ...
- 说说Android项目中的armeabi,armeabi-v7a和x86
1.区别 这三者都表示的是CPU类型,早期的Android系统几乎只支持ARMv5的CPU架构,但是现在已经有7种了.ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MI ...
- Oracle 11g 测试ogg中断之后,重新同步操作
测试ogg中断之后,重新同步操作 2018-06-07 17:11 779 1 原创 GoldenGate 本文链接:https://www.cndba.cn/leo1990/article/2839 ...
- websocket+rabbitMQ
拉取镜像:docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 15672:15672 -p 61613:616 ...