1
0
mirror of https://gitcode.com/gh_mirrors/re/react-native-pushy.git synced 2025-09-16 10:21:37 +08:00
Code Issues Packages Projects Releases Wiki Activity GitHub Gitee

improve testurls

This commit is contained in:
sunny.luo
2024-12-13 18:40:23 +08:00
parent 8408f7ebe5
commit ab22e7f733

View File

@@ -37,15 +37,35 @@ export const emptyModule = new EmptyModule();
const ping =
Platform.OS === 'web'
? Promise.resolve
: async (url: string) =>
Promise.race([
: async (url: string) => {
let pingFinished = false;
return Promise.race([
fetch(url, {
method: 'HEAD',
})
.then(({ status }) => (status === 200 ? url : null))
.catch(() => null),
new Promise(r => setTimeout(() => r(null), 2000)),
.then(({ status, statusText }) => {
pingFinished = true;
if (status === 200) {
return url;
}
log('ping failed', url, status, statusText);
return null;
})
.catch(e => {
pingFinished = true;
log('ping error', url, e);
return null;
}),
new Promise(r =>
setTimeout(() => {
r(null);
if (!pingFinished) {
log('ping timeout', url);
}
}, 2000),
),
]);
};
export function joinUrls(paths: string[], fileName?: string) {
if (fileName) {
@@ -57,5 +77,10 @@ export const testUrls = async (urls?: string[]) => {
if (!urls?.length) {
return null;
}
return promiseAny(urls.map(ping)).catch(() => null);
const ret = await promiseAny(urls.map(ping));
if (ret) {
return ret;
}
log('all ping failed, use first url:', urls[0]);
return urls[0];
};