feat: 处理传入 httpClient 的 timeout 参数

This commit is contained in:
xream 2024-03-24 07:28:16 +08:00
parent e3a514d1fb
commit 0efed4f1a0
No known key found for this signature in database
GPG Key ID: 1D2C5225471789F9
2 changed files with 34 additions and 24 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "sub-store", "name": "sub-store",
"version": "2.14.262", "version": "2.14.263",
"description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.",
"main": "src/main.js", "main": "src/main.js",
"scripts": { "scripts": {

View File

@ -323,36 +323,46 @@ export function HTTP(defaultOptions = { baseURL: '' }) {
const request = isNode const request = isNode
? eval("require('request')") ? eval("require('request')")
: $httpClient; : $httpClient;
request[method.toLowerCase()]( const opts = JSON.parse(JSON.stringify(options));
JSON.parse(JSON.stringify(options)), if (!isNode && opts.timeout) {
(err, response, body) => { opts.timeout++;
// if (err) { let unit = 'ms';
// console.log(err); // 这些客户端单位为 s
// } else { if (isSurge || isStash || isShadowRocket) {
// console.log({ opts.timeout = Math.ceil(opts.timeout / 1000);
// statusCode: unit = 's';
// response.status || response.statusCode, }
// headers: response.headers, // Loon 为 ms
// body, // 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); if (err) reject(err);
else else
resolve({ resolve({
statusCode: statusCode: response.status || response.statusCode,
response.status || response.statusCode, headers: response.headers,
headers: response.headers, body,
body, });
}); });
},
);
}); });
} }
let timeoutid; let timeoutid;
const timer = timeout const timer = timeout
? new Promise((_, reject) => { ? new Promise((_, reject) => {
// console.log(`[request timeout] ${timeout}ms`);
timeoutid = setTimeout(() => { timeoutid = setTimeout(() => {
events.onTimeout(); events.onTimeout();
return reject( return reject(