This commit is contained in:
kerwincui
2024-03-17 14:59:23 +08:00
parent 3d44f4674c
commit 5539c1b6af
999 changed files with 115642 additions and 10757 deletions

View File

@@ -1,124 +1,132 @@
import mqtt from 'mqtt'
import { getToken } from "@/utils/auth";
import mqtt from 'mqtt';
import { getToken } from '@/utils/auth';
let mqttTool = {
client: null,
}
};
/** 连接Mqtt */
mqttTool.connect = function () {
let options = {
username: "wumei-smart",
username: 'FastBee',
password: getToken(),
cleanSession: true,
keepAlive: 30,
clientId: 'web-' + Math.random().toString(16).substr(2),
connectTimeout: 10000
}
connectTimeout: 60000,
};
// 配置Mqtt地址
let url = process.env.VUE_APP_EMQX_SERVER_URL;
let url = process.env.VUE_APP_MQTT_SERVER_URL;
if (url == '') {
url = "ws://" + window.location.hostname + ":8083/mqtt";
console.log('自动获取地址');
console.log('自动获取mqtt连接地址');
if (window.location.protocol === 'http:') {
url = 'ws://' + window.location.hostname + ':8083/mqtt';
} else {
url = 'wss://' + window.location.hostname + '/mqtt';
}
}
console.log("mqtt地址", url);
console.log('mqtt地址', url);
mqttTool.client = mqtt.connect(url, options);
mqttTool.client.on("connect", (e) => {
mqttTool.client.on('connect', (e) => {
console.log('mqtt连接成功');
});
// 重新连接
mqttTool.client.on('reconnect', (error) => {
console.log('正在重连:', error)
console.log('正在重连:', error);
});
// 发生错误
mqttTool.client.on('error', (error) => {
console.log('Mqtt客户端连接失败', error)
console.log('Mqtt客户端连接失败', error);
mqttTool.client.end();
})
});
// 断开连接
mqttTool.client.on('close', function (res) {
console.log('已断开Mqtt连接');
});
}
};
/** 断开连接 */
mqttTool.end = function () {
return new Promise((resolve, reject) => {
if (mqttTool.client == null) {
resolve('未连接')
console.log("未连接")
resolve('未连接');
console.log('未连接');
return;
}
mqttTool.client.end()
mqttTool.client = null
mqttTool.client.end();
mqttTool.client = null;
console.log('Mqtt服务器已断开连接');
resolve('连接终止')
})
}
resolve('连接终止');
});
};
/** 重新连接 */
mqttTool.reconnect = function () {
return new Promise((resolve, reject) => {
if (mqttTool.client == null) {
// 调用resolve方法Promise变为操作成功状态fulfilled
resolve('未连接')
console.log("未连接")
resolve('未连接');
console.log('未连接');
return;
}
console.log('正在重连...', res);
mqttTool.client.reconnect()
})
}
mqttTool.client.reconnect();
});
};
/** 消息订阅 */
mqttTool.subscribe = function (topics) {
return new Promise((resolve, reject) => {
if (mqttTool.client == null) {
resolve('未连接')
console.log("未连接")
resolve('未连接');
console.log('未连接');
uni.showToast({
icon: 'none',
title: 'mqtt未连接',
});
return;
}
mqttTool.client.subscribe(topics, {
qos: 1
}, function (err, res) {
console.log("订阅主题:", topics);
if (!err) {
console.log("订阅成功")
resolve('订阅成功')
} else {
console.log("订阅失败,主题可能已经订阅")
resolve('订阅失败')
return;
mqttTool.client.subscribe(
topics,
{
qos: 1,
},
function (err, res) {
console.log('订阅主题:', topics);
if (!err) {
console.log('订阅成功');
resolve('订阅成功');
} else {
console.log('订阅失败,主题可能已经订阅');
resolve('订阅失败');
return;
}
}
})
})
}
);
});
};
/** 取消订阅 */
mqttTool.unsubscribe = function (topics) {
return new Promise((resolve, reject) => {
if (mqttTool.client == null) {
resolve('未连接')
console.log("未连接")
resolve('未连接');
console.log('未连接');
return;
}
mqttTool.client.unsubscribe(topics, function (err) {
if (!err) {
resolve('取消订阅成功')
console.log("取消订阅成功")
resolve('取消订阅成功');
console.log('取消订阅成功');
} else {
resolve('取消订阅失败')
console.log("取消订阅失败")
resolve('取消订阅失败');
console.log('取消订阅失败');
return;
}
})
})
}
});
});
};
mqttTool.publish = function (topic, message, name) {
return new Promise((resolve, reject) => {
if (mqttTool.client == null) {
resolve('Mqtt客户端未连接')
console.log("Mqtt客户端未连接")
resolve('Mqtt客户端未连接');
console.log('Mqtt客户端未连接');
return;
}
mqttTool.client.publish(topic, message, { qos: 1 }, function (err) {
@@ -126,19 +134,19 @@ mqttTool.publish = function (topic, message, name) {
console.log('发送内容:', message);
if (!err) {
if (topic.indexOf('offline') > 0) {
console.log("[ " + name + " ] 影子指令发送成功");
resolve("[ " + name + " ] 影子指令发送成功");
console.log('[ ' + name + ' ] 影子指令发送成功');
resolve('[ ' + name + ' ] 影子指令发送成功');
} else {
console.log("[ " + name + " ] 指令发送成功");
resolve("[ " + name + " ] 指令发送成功");
console.log('[ ' + name + ' ] 指令发送成功');
resolve('[ ' + name + ' ] 指令发送成功');
}
} else {
console.log("[ " + name + " ] 指令发送失败");
reject("[ " + name + " ] 指令发送失败");
console.log('[ ' + name + ' ] 指令发送失败');
reject('[ ' + name + ' ] 指令发送失败');
return;
}
})
})
}
});
});
};
export default mqttTool
export default mqttTool;