diff --git a/backend/package.json b/backend/package.json index 1b5580e..9ba443a 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "sub-store", - "version": "2.14.262", + "version": "2.14.263", "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", "main": "src/main.js", "scripts": { diff --git a/backend/src/vendor/open-api.js b/backend/src/vendor/open-api.js index 18bdcba..fc6da24 100644 --- a/backend/src/vendor/open-api.js +++ b/backend/src/vendor/open-api.js @@ -323,36 +323,46 @@ export function HTTP(defaultOptions = { baseURL: '' }) { const request = isNode ? eval("require('request')") : $httpClient; - request[method.toLowerCase()]( - JSON.parse(JSON.stringify(options)), - (err, response, body) => { - // if (err) { - // console.log(err); - // } else { - // console.log({ - // statusCode: - // response.status || response.statusCode, - // headers: response.headers, - // body, - // }); - // } + const opts = JSON.parse(JSON.stringify(options)); + if (!isNode && opts.timeout) { + opts.timeout++; + let unit = 'ms'; + // 这些客户端单位为 s + if (isSurge || isStash || isShadowRocket) { + opts.timeout = Math.ceil(opts.timeout / 1000); + unit = 's'; + } + // Loon 为 ms + // console.log(`[httpClient timeout] ${opts.timeout}${unit}`); + } + request[method.toLowerCase()](opts, (err, response, body) => { + // if (err) { + // console.log(err); + // } else { + // console.log({ + // statusCode: + // response.status || response.statusCode, + // headers: response.headers, + // body, + // }); + // } - if (err) reject(err); - else - resolve({ - statusCode: - response.status || response.statusCode, - headers: response.headers, - body, - }); - }, - ); + if (err) reject(err); + else + resolve({ + statusCode: response.status || response.statusCode, + headers: response.headers, + body, + }); + }); }); } let timeoutid; + const timer = timeout ? new Promise((_, reject) => { + // console.log(`[request timeout] ${timeout}ms`); timeoutid = setTimeout(() => { events.onTimeout(); return reject(