<template>
|
<view>
|
</view>
|
</template>
|
|
<script>
|
export default {
|
name: 'MqttView',
|
data() {
|
return {
|
|
}
|
},
|
onReady() {
|
|
|
},
|
methods: {
|
initMqtt() {
|
uni.getSystemInfo({
|
success: (res) => {
|
let deviceId = res.deviceId
|
if (!deviceId) {
|
deviceId = 'mobile-' + this.tenantId + '-' + Date.parse(new Date())
|
}
|
uni.setStorageSync(this.$constant.DEVICE_ID, 'mobile-' + this.tenantId + '-' + res
|
.deviceId);
|
}
|
})
|
this.startConnect();
|
},
|
/* 连接MQTT */
|
async startConnect() {
|
var _this = this
|
const account = uni.getStorageSync('account');
|
const deviceid = uni.getStorageSync(this.$constant.DEVICE_ID);
|
|
if (!account) {
|
|
return false
|
}
|
let opts = {
|
// #ifdef H5
|
url: 'wss://' + this.$api.mqttBaseUrl + ':8084/mqtt',
|
// #endif
|
// #ifdef MP-WEIXIN
|
url: 'wxs://' + this.$api.mqttBaseUrl + ':8084/mqtt',// 微信小程序强制 WSS
|
// #endif
|
// #ifdef APP-PLUS
|
url: 'wxs://' + this.$api.mqttBaseUrl + ':8084/mqtt', // Android/iOS 用普通 WebSocket
|
// #endif
|
clientId: deviceid,
|
username: account.username,
|
password: account.password
|
}
|
if (!this.$mqttTool.client) {
|
this.$mqttTool.client = await this.$mqttTool.connect(opts);
|
}
|
//订阅查询设备状态返回数据
|
this.$mqttTool.subscribe({
|
topic: this.$constant.SERVICE_DOWN + '/' + deviceid + '/#',
|
qos: 0
|
}).then(res => {
|
console.error(res)
|
})
|
|
//订阅设备故障广播(广播不在乎客户端id,发送给租户下所有在线的设备)
|
this.$mqttTool.subscribe({
|
topic: this.$constant.SERVICE_BROADCAST_TENANT_REAL_FAULT.replace('%s', this.tenantId),
|
qos: 0
|
}).then(res => {
|
console.error(res)
|
})
|
|
//订阅设备实时故障(主动请求只发给请求设备)
|
this.$mqttTool.subscribe({
|
topic: this.$constant.SERVICE_ONECE_TENANT_REAL_FAULT.replace('%s', deviceid),
|
qos: 0
|
}).then(res => {
|
console.error(res)
|
})
|
|
//订阅干燥设备连接断开状态更新-租户内所有设备
|
this.$mqttTool.subscribe({
|
topic: this.$constant.SERVICE_BROADCAST_TENANT_UPDATE_EQU_STATU.replace('%s', this.tenantId),
|
qos: 0
|
}).then(res => {
|
console.error(res)
|
})
|
//订阅查询干燥设备连接状态-单个设备
|
this.$mqttTool.subscribe({
|
topic: this.$constant.SERVICE_RES_EQU_STATU.replace('%s', deviceid),
|
qos: 0
|
}).then(res => {
|
console.error(res)
|
})
|
|
//订阅干燥设备实时数据
|
this.$mqttTool.subscribe({
|
topic: this.$constant.SERVICE_BROADCAST_TENANT_REAL_DATA.replace('%s', this.tenantId),
|
qos: 0
|
}).then(res => {
|
console.error(res)
|
})
|
|
//订阅发送指令返回结果
|
// this.$mqttTool.subscribe({
|
// topic: this.$constant.SERVICE_RES_EQU_CMD,
|
// qos: 0
|
// }).then(res => {
|
// console.error(res)
|
// })
|
// if (!client) {
|
// return false
|
// }
|
let that = this
|
let client = this.$mqttTool.client
|
|
client.on('connect', function(res) {
|
console.error('连接成功')
|
console.error(res)
|
})
|
client.on('reconnect', function(res) {
|
console.error('重新连接')
|
console.error(res)
|
})
|
client.on('error', function(res) {
|
console.info('连接错误')
|
console.error(res)
|
})
|
client.on('close', function(res) {
|
|
console.error('关闭成功')
|
console.error(res)
|
|
})
|
client.on('message', function(topic, message, buffer) {
|
uni.$emit(that.$constant.MQTT_TOPIC_MESSAGE, message);
|
console.error("收到message(总):"+topic)
|
|
|
})
|
},
|
},
|
computed: {
|
tenantId() {
|
const userinfo = uni.getStorageSync('userinfo');
|
const tenantid = userinfo.loginTenantId
|
return tenantid;
|
}
|
|
}
|
}
|
</script>
|
|
<style>
|
|
</style>
|