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 = const ping =
Platform.OS === 'web' Platform.OS === 'web'
? Promise.resolve ? Promise.resolve
: async (url: string) => : async (url: string) => {
Promise.race([ let pingFinished = false;
return Promise.race([
fetch(url, { fetch(url, {
method: 'HEAD', method: 'HEAD',
}) })
.then(({ status }) => (status === 200 ? url : null)) .then(({ status, statusText }) => {
.catch(() => null), pingFinished = true;
new Promise(r => setTimeout(() => r(null), 2000)), 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) { export function joinUrls(paths: string[], fileName?: string) {
if (fileName) { if (fileName) {
@@ -57,5 +77,10 @@ export const testUrls = async (urls?: string[]) => {
if (!urls?.length) { if (!urls?.length) {
return null; 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];
}; };