阿里云物联网套件(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. 服务调用 ...
随机推荐
- 两年前详细分析了ijkplayer的代码
两年前详细分析了ijkplayer的代码,太久没总结了,现在只能上传一张图片了.把fly替换成ijk就行了. 用diagramDesigner画的,因为这个工具足够简单,用visio不知道要画到什么时 ...
- 数据库 ACID
ACID是指一个事务本质上有四个特点: Atomicity:原子性 Consistency:一致性 Isolation:隔离性 Durablilty:耐久性 原子性 原子性是指事务是一个不可分割的工作 ...
- linux下用户操作
在linux中添加ftp用,并设置相应的权限,操作步骤如下: 1.环境:ftp为vsftp.被限制用户名为test.被限制路径为/home/test. 2.建用户:在root用户下: useradd ...
- cordova/phonegap/webapp性能优化方法
1.有条件可以自己做UI,不要用框架.用框架的话不要用jquery mobile,用sencha touch或者jqmobi(app framework) 2.不要在服务器生成UI,在本地生成. 3. ...
- 软工作业PSP与单元测试训练:java语言判断电子邮箱格式
任务说明(二选一): 一.实现模块判断传入的身份证号码的正确性: 二.实现模块判断传入的电子邮箱账号的正确性: 实现要求: 一.实现功能模块: 1. 判断邮箱地址是否为空: 2. 判断邮箱地址是否 ...
- 《Swell数学》用户故事
一.用户故事基础知识: 1. 从用户的角度来描述用户渴望得到的功能. 2. 用户故事是描述对用户有价值的功能,好的用户故事应该包括角色.功能和商业价值三个要素. 3. 一个用户故事只是以客户能够明白的 ...
- 初写Linux脚本坑记录
1.为变量赋值时=前后一定没有空格. 2.赋值时变量为xx,读取才是$xx.如赋值是$xx,则报语法错误.参考 http://www.jb51.net/article/52375.htm 3.脚本每句 ...
- Python之file方法
def fileno(self): # 文件描述符 def flush(self): # 刷新文件内部缓冲区 def isatty(se ...
- 前端校验框架ValidForm之check方法修正
用过validform的朋友相信都知道,在利用check方法的时候,发现该方法对表单输入值只要符合datatype规则的就返回ture.那么我们想对某个字段进行ajax重复校验的时候,只需要在该表单元 ...
- 小练习_num1
题目:将一个正整数分解质因数.例如:输入90,打印输出90=2*3*3*5. /* 分解质因数 */ import java.util.*; class num1 { public static vo ...