阿里云物联网套件(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. 服务调用 ...
随机推荐
- 关于leal和mov
最近在学习leal的时候遇到了一点非常迷惑的地方,就是leal是用来取有效地址的,但是为什么它也可以实现赋值呢?偶然发现一个博客讲的不错,遂自己记录一下 一个这样的例子 leal 7(%edx,%ed ...
- 李航《统计学习方法》CH02
CH02 感知机 前言 章节目录 感知机模型 感知机学习策略 数据集的线性可分性 感知机学习策略 感知机学习算法 感知机学习算法 感知机学习算法的原始形式 算法的收敛性 感知机学习算法的对偶形式 导读 ...
- 开发企业微信打卡API笔记
获取企业微信打开API上面的数据 根据企业ID和打卡模块的secret获取access_token 打卡传参body为json格式的字符传 创建打卡对象把参数写入,useridlist为list格式. ...
- 第4天:scipy库
一.SciPy库概述 1.numpy提供向量和矩阵的相关操作,高级计算器 2.SciPy在统计.优化.插值.数值积分.视频转换等,涵盖基础科学计算相关问题. (额,对统计和概率,数理完全一窍不通) 3 ...
- Memory and Trident(CodeForces 712B)
Description Memory is performing a walk on the two-dimensional plane, starting at the origin. He is ...
- linux创建虚拟环境
linux提供的虚拟环境工具: virtualenv pipenv 1.安装python的虚拟环境 pip3 install -i https://pypi.tuna.tsinghua.edu.c ...
- js中!和!!的区别及用法
js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值,1.!可将变量转换成boolean类型,null.undefined和空字符串取反都为false,其 ...
- Dubbo源码构建
代码签出 通过以下的这个命令签出最新的项目源码: git clone https://github.com/apache/incubator-dubbo.git dubbo 分支 我们使用 maste ...
- 第一周博客之二---OA项目环境搭建及开发包部署
OA项目环境搭建 一个项目想要能够在开发人员打包好项目包之后进行测试,就必须进行项目测试环境的搭建,要根据开发工程师的开发环境采用不同的测试环境,以下只是浅谈下Java项目OA(办公自动化平台)的环境 ...
- 表单传参,在action中的参数得不到
写上面这个的时候,发现传过去的url路径是这样的 在action后面的pro=login得不到. 只需要将method中的get改成post就可以了