diff --git a/track-uniapp/src/utils/request.js b/track-uniapp/src/utils/request.js index 28f67e8..c6ba3f0 100644 --- a/track-uniapp/src/utils/request.js +++ b/track-uniapp/src/utils/request.js @@ -1,67 +1,20 @@ /** - * uni.request 封装 — 智能环境切换 + 双 Token 无感刷新 + 并发请求队列 + * uni.request 封装 — 双 Token 无感刷新 + 并发请求队列 * - * 🚀 自动检测:启动时 ping 本地服务器,可达则用本地,否则走生产。 - * 无需手动复制 request.local.js / request.prod.js。 + * 环境选择:优先读取 storage 中的 env_base_url, + * 未设置时默认走生产服务器。开发时如需切换,在登录前手动设置。 */ -const LOCAL_URL = "http://localhost:8011/api/v1"; -const LAN_URL = "http://192.168.9.80:8011/api/v1"; const PROD_URL = "http://172.16.0.198:8011/api/v1"; // ============================================================ -// 环境自动检测(仅首次启动时执行一次) +// 环境 URL // ============================================================ -let BASE_URL = uni.getStorageSync("env_base_url") || ""; -let envChecked = !!BASE_URL; - function getBaseUrl() { - if (!BASE_URL) BASE_URL = PROD_URL; // 兜底 - return BASE_URL; + return uni.getStorageSync("env_base_url") || PROD_URL; } -async function detectEnv() { - if (envChecked) return; - envChecked = true; - - // 并行 ping 两个服务器,谁先响应就用谁 - const probe = (url) => - new Promise((resolve) => { - const start = Date.now(); - uni.request({ - url: url + "/auth/login", - method: "POST", - data: { username: "_ping_", password: "_ping_" }, - timeout: 3000, - complete() { - resolve({ url, ms: Date.now() - start }); - }, - }); - }); - - const [localResult, lanResult, prodResult] = await Promise.all([ - probe(LOCAL_URL), - probe(LAN_URL), - probe(PROD_URL), - ]); - - // 优先级: localhost > 局域网IP > 生产 - if (localResult.ms < 3000) { - BASE_URL = LOCAL_URL; - } else if (lanResult.ms < 3000) { - BASE_URL = LAN_URL; - } else { - BASE_URL = PROD_URL; - } - uni.setStorageSync("env_base_url", BASE_URL); - console.log("[Env] 自动选择:", BASE_URL, - `(localhost ${localResult.ms}ms, 局域网 ${lanResult.ms}ms, 生产 ${prodResult.ms}ms)`); -} - -// App 启动时立即触发检测 -detectEnv(); - // ============================================================ // 双 Token 存储 // ============================================================