123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- import mqtt from './mqtt';
- let mqttClientCmd = null; // 全局 CMD MQTT
- let mqttClientData = null; // 全局 DATA MQTT
- let mqttCmdConnected = false;
- let mqttDataConnected = false;
- let reconnectTimer = null; // 重连定时器
- export function createMqttClient() {
- if (mqttCmdConnected) {
- console.log("CMD MQTT 已连接");
- return mqttClientCmd;
- }
- const params = {
- // keepalive: 60,
- clean: true,
- connectTimeout: 30 * 1000,
- clientId:
- "xcx_mqtt_cmd1" +
- uni.getStorageSync("userId") +
- Math.random().toString(16).substring(2, 8),
- username: "lnradar",
- password: "lnradar",
- wsOptions: {
- WebSocket: function (url) {
- return wx.connectSocket({
- url: url,
- header: {
- "content-type": "application/json",
- },
- protocols: ["mqtt"],
- });
- },
- },
- };
- let client = "";
- client = mqtt.connect("wxs://cmd.radar-power.cn/mqtt/", params);
- client.on("connect", () => {
- mqttCmdConnected = true;
- console.log("MQTTCMD连接成功");
- const userId = uni.getStorageSync("userId");
- client.subscribe(`/mps/wx_${userId}/notice`, (err) => {
- if (err) {
- console.error("订阅失败", err);
- } else {
- console.log(`成功订阅设备主题: /mps/wx_${userId}/notice`);
- }
- });
- });
- client.on("message", (topic, message) => {
- console.log("topic", topic, message);
- console.log("接收到消息:", JSON.parse(message.toString()));
- const userId = uni.getStorageSync("userId");
- const noticeMatch = /^\/mps\/wx_(.+)\/notice$/;
- const match = topic.match(noticeMatch);
- if (!match) return;
- });
- client.on("error", (err) => {
- mqttCmdConnected = false;
- console.error("MQTT连接错误:", err);
- // 连接失败时重新尝试连接
- setTimeout(() => {
- createMqttClient(); // 重新连接
- }, 1000);
- });
- client.on("disconnect", () => {
- mqttCmdConnected = false;
- console.log("MQTT断开连接");
- });
- return client;
- }
- // 创建data连接
- export function createMqttData() {
- if (!uni.getStorageSync("userId")) {
- console.warn("DATA MQTT 创建失败:缺少 userId");
- return null;
- }
- if (mqttDataConnected) return mqttClientData;
- const params = {
- // keepalive: 60,
- clean: true,
- connectTimeout: 1500,
- clientId: "xcx_mqtt_data1_" + uni.getStorageSync("userId") + "_" + Date.now(),
- username: "lnradar",
- password: "lnradar",
- WebSocket: function (url) {
- return wx.connectSocket({
- url: url,
- header: {
- "content-type": "application/json",
- },
- protocols: ["mqtt"],
- });
- },
- reconnectPeriod: 2000
- };
- mqttClientData = mqtt.connect("wxs://data.radar-power.cn/mqtt/", params);
- mqttClientData.on("connect", () => {
- console.log("DATA MQTT 连接成功");
- mqttDataConnected = true;
- });
- // mqttClientData.subscribe(`/dev/${clientIdProp}/tracker_targets`, (err) => {
- // if (err) console.error("DATA MQTT 订阅失败", err);
- // else console.log(`DATA MQTT 订阅成功: /dev/${clientIdProp}/tracker_targets`);
- // });
- mqttClientData.on("message", (topic, message) => {
- console.log("topic", topic, message);
- console.log("接收到消息:", JSON.parse(message.toString()));
- });
- mqttClientData.on("error", (err) => { mqttDataConnected = false; console.error(err); });
- mqttClientData.on("disconnect", () => { mqttDataConnected = false; console.log("DATA MQTT 断开"); });
- mqttClientData.close = function (force = true) {
- mqttClientData.end(force, () => {
- mqttDataConnected = false;
- console.log("DATA MQTT 已关闭");
- });
- };
- // mqttClientData.on("close", () => {
- // mqttDataConnected = false;
- // console.log("DATA MQTT 已关闭");
- // });
- return mqttClientData;
- }
|