Explorar el Código

提交优化的mqtt代码

wangming hace 1 mes
padre
commit
224ff0ac72
Se han modificado 2 ficheros con 104 adiciones y 9 borrados
  1. 8 8
      src/pagesA/playSetting/playSetting.vue
  2. 96 1
      src/utils/globalMqtt.js

+ 8 - 8
src/pagesA/playSetting/playSetting.vue

@@ -168,7 +168,7 @@ export default {
             mergeTime: 30,
             judgeFlage: "",
             remark: "",
-            areaModle: true,
+            areaModle: false,
         };
     },
     methods: {
@@ -180,13 +180,13 @@ export default {
             // 4 6 8
             // 不配生效时间
             // 1 2 6 9  需要配置区域
-            if (
-                this.planInfo.eventVal == 5 ||
-                this.planInfo.eventVal == 4 ||
-                this.planInfo.eventVal == 8
-            ) {
-                this.areaModle = true;
-            }
+            // if (
+            //     this.planInfo.eventVal == 5 ||
+            //     this.planInfo.eventVal == 4 ||
+            //     this.planInfo.eventVal == 8
+            // ) {
+            //     this.areaModle = true;
+            // }
 
             if (this.judgeFlage == "noneFlag") {
                 this.timeRange = [

+ 96 - 1
src/utils/globalMqtt.js

@@ -5,6 +5,7 @@ let mqttClientData = null;  // 全局 DATA MQTT
 
 let mqttCmdConnected = false;
 let mqttDataConnected = false;
+let reconnectTimer = null; // 重连定时器
 
 export function createMqttClient() {
     if (mqttCmdConnected) {
@@ -93,7 +94,7 @@ export function createMqttData(clientIdProp) {
     const params = {
         keepalive: 60,
         clean: true,
-        connectTimeout: 10000,
+        connectTimeout: 1500,
         clientId: "xcx_mqtt_data1_" + clientIdProp + "_" + Date.now(),
         username: "lnradar",
         password: "lnradar",
@@ -141,3 +142,97 @@ export function createMqttData(clientIdProp) {
     // });
     return mqttClientData;
 }
+// export function createMqttData(clientIdProp) {
+//     if (!clientIdProp) {
+//         console.warn("DATA MQTT 创建失败:缺少 clientIdProp");
+//         return null;
+//     }
+
+//     // 如果已经连接,直接返回
+//     if (mqttDataConnected && mqttClientData) return mqttClientData;
+
+//     // 内部连接函数
+//     const connect = () => {
+//         const params = {
+//             keepalive: 60,
+//             clean: true,
+//             connectTimeout: 1500,
+//             clientId: "xcx_mqtt_data1_" + clientIdProp + "_" + Date.now(),
+//             username: "lnradar",
+//             password: "lnradar",
+//             WebSocket: function (url) {
+//                 return wx.connectSocket({
+//                     url: url,
+//                     header: { "content-type": "application/json" },
+//                     protocols: ["mqtt"],
+//                 });
+//             },
+//             reconnectPeriod: 0 // 手动重连
+//         };
+
+//         mqttClientData = mqtt.connect("wxs://data.radar-power.cn/mqtt/", params);
+
+//         mqttClientData.on("connect", () => {
+//             console.log("DATA MQTT 连接成功");
+//             mqttDataConnected = true;
+
+//             // 订阅 topic
+//             mqttClientData.subscribe(`/dev/${clientIdProp}/tracker_targets`, (err) => {
+//                 if (err) console.error("DATA MQTT 订阅失败", err);
+//                 else console.log(`DATA MQTT 订阅成功: /dev/${clientIdProp}/tracker_targets`);
+//             });
+
+//             // 清理重连定时器
+//             if (reconnectTimer) {
+//                 clearTimeout(reconnectTimer);
+//                 reconnectTimer = null;
+//             }
+//         });
+
+//         mqttClientData.on("message", (topic, message) => {
+//             console.log("topic", topic, message);
+//             try {
+//                 console.log("接收到消息:", JSON.parse(message.toString()));
+//             } catch (e) {
+//                 console.log("接收到非 JSON 消息:", message.toString());
+//             }
+//         });
+
+//         mqttClientData.on("error", (err) => {
+//             console.error("DATA MQTT 错误:", err);
+//             mqttDataConnected = false;
+//             scheduleReconnect();
+//         });
+
+//         mqttClientData.on("disconnect", () => {
+//             console.log("DATA MQTT 断开");
+//             mqttDataConnected = false;
+//             scheduleReconnect();
+//         });
+
+//         // 安全关闭方法
+//         mqttClientData.close = function (force = true) {
+//             if (mqttClientData) {
+//                 mqttClientData.end(force, () => {
+//                     mqttDataConnected = false;
+//                     console.log("DATA MQTT 已关闭");
+//                 });
+//             }
+//         };
+//     };
+
+//     // 内部重连调度
+//     const scheduleReconnect = () => {
+//         if (reconnectTimer) return; // 避免重复设置
+//         console.log("DATA MQTT 尝试重连中...");
+//         reconnectTimer = setTimeout(() => {
+//             reconnectTimer = null;
+//             connect();
+//         }, 1500); // 2 秒后重连
+//     };
+
+//     // 首次调用连接
+//     connect();
+
+//     return mqttClientData;
+// }