|
@@ -5,6 +5,7 @@ let mqttClientData = null; // 全局 DATA MQTT
|
|
|
|
|
|
let mqttCmdConnected = false;
|
|
let mqttCmdConnected = false;
|
|
let mqttDataConnected = false;
|
|
let mqttDataConnected = false;
|
|
|
|
+let reconnectTimer = null; // 重连定时器
|
|
|
|
|
|
export function createMqttClient() {
|
|
export function createMqttClient() {
|
|
if (mqttCmdConnected) {
|
|
if (mqttCmdConnected) {
|
|
@@ -93,7 +94,7 @@ export function createMqttData(clientIdProp) {
|
|
const params = {
|
|
const params = {
|
|
keepalive: 60,
|
|
keepalive: 60,
|
|
clean: true,
|
|
clean: true,
|
|
- connectTimeout: 10000,
|
|
|
|
|
|
+ connectTimeout: 1500,
|
|
clientId: "xcx_mqtt_data1_" + clientIdProp + "_" + Date.now(),
|
|
clientId: "xcx_mqtt_data1_" + clientIdProp + "_" + Date.now(),
|
|
username: "lnradar",
|
|
username: "lnradar",
|
|
password: "lnradar",
|
|
password: "lnradar",
|
|
@@ -141,3 +142,97 @@ export function createMqttData(clientIdProp) {
|
|
// });
|
|
// });
|
|
return mqttClientData;
|
|
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;
|
|
|
|
+// }
|