var $mqtt = require("@/common/js/mqttws31.js");
var $crypto = require("@/common/js/crypto-js.js");
var instanceId = 'xxxxxxxxxx'; //实例 ID,购买后从控制台获取
var host = 'xxxxxxxxxx.mqtt.aliyuncs.com'; // 设置当前用户的接入点域名,接入点获取方法请参考接入准备章节文档,先在控制台创建实例
var port = 80; //WebSocket 协议服务端口,如果是走 HTTPS,设置443端口
var topic = 'Topic_xxxxxxxxxx'; //需要操作的 Topic,第一级父级 topic 需要在控制台申请
var useTLS = false; //是否走加密 HTTPS,如果走 HTTPS,设置为 true
var accessKey = 'xxxxxxxxxx'; //账号的 AccessKey,在阿里云控制台查看
var secretKey = 'xxxxxxxxxx'; //账号的的 SecretKey,在阿里云控制台查看
var cleansession = true;
var groupId = 'GID_xxxxxxxxxx'; //MQTT GroupID,创建实例后从 MQTT 控制台创建
var clientId = groupId '@@@00001'; //GroupId@@@DeviceId,由控制台创建的 Group ID 和自己指定的 Device ID 组合构成
var mqtt;
var reconnectTimeout = 2000;
var username = 'Signature|' accessKey '|' instanceId; //username和 Password 签名模式下的设置方法,参考文档 https://help.aliyun.com/document_detail/48271.html?spm=a2c4g.11186623.6.553.217831c3BSFry7
var password = "";
export default {
data() {
return {
mecont: []
}
},
onLoad() {
password = $crypto.HmacSHA1(clientId, secretKey).toString($crypto.enc.Base64);
MQTTconnect(this);
},
methods: {
}
}
function MQTTconnect(_this) {
mqtt = new $mqtt.Client(
host, //MQTT 域名
port, //WebSocket 端口,如果使用 HTTPS 加密则配置为443,否则配置80
clientId //客户端 ClientId
);
var options = {
userName: username,
password: password,
useSSL: useTLS, //如果使用 HTTPS 加密则配置为 true
onSuccess: function onConnect() { //连接成功
_this.mecont.push(new Date() ": " "连接成功");
// Connection succeeded; subscribe to our topic
//订阅消息
mqtt.subscribe(topic "/subDemo1", {
qos: 0
});
//测试消息推送
var message = new $mqtt.Message("APP测试消息推送!!"); //set body
message.destinationName = topic; // set topic
// //发送 P2P 消息,topic 设置方式参考https://help.aliyun.com/document_detail/96176.html?spm=a2c4g.11186623.6.586.694f7cb4oookL7
// message = new $mqtt.Message("Hello mqtt P2P Msg!!"); //set body
// message.destinationName = topic "/p2p/" clientId; // set topic
mqtt.send(message);
},
onFailure: function(message) { //连接失败
_this.mecont.push(new Date() ": " "连接失败" JSON.stringify(message));
//连接失败,重新连接
setTimeout(MQTTconnect, reconnectTimeout);
}
};
mqtt.onConnectionLost = function onConnectionLost(response) {
_this.mecont.push(new Date() ": " "连接中断" JSON.stringify(response));
//连接失败,重新连接
setTimeout(MQTTconnect, reconnectTimeout);
};
mqtt.onMessageArrived = function onMessageArrived(message) {
var topic = message.destinationName;
var payload = message.payloadString;
_this.mecont.push(new Date() ": " "收到新消息" topic " " payload);
};
mqtt.connect(options);
}