Workaround for a disconnected worker on iOS (another one)
This commit is contained in:
parent
11b2d54d05
commit
df97f085e1
@ -142,6 +142,7 @@ function makeRequest(message: OriginRequest) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
requestStates.set(messageId, requestState);
|
requestStates.set(messageId, requestState);
|
||||||
|
|
||||||
promise
|
promise
|
||||||
.catch(() => undefined)
|
.catch(() => undefined)
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
@ -161,19 +162,25 @@ const startedAt = Date.now();
|
|||||||
|
|
||||||
// Workaround for iOS sometimes stops interacting with worker
|
// Workaround for iOS sometimes stops interacting with worker
|
||||||
function setupIosHealthCheck() {
|
function setupIosHealthCheck() {
|
||||||
window.addEventListener('focus', async () => {
|
window.addEventListener('focus', () => {
|
||||||
try {
|
void ensureWorkerPing();
|
||||||
await Promise.race([
|
// Sometimes a single check is not enough
|
||||||
makeRequest({ type: 'ping' }),
|
setTimeout(() => ensureWorkerPing(), 1000);
|
||||||
pause(HEALTH_CHECK_TIMEOUT).then(() => Promise.reject(new Error('HEALTH_CHECK_TIMEOUT'))),
|
|
||||||
]);
|
|
||||||
} catch (err) {
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.error(err);
|
|
||||||
|
|
||||||
if (Date.now() - startedAt >= HEALTH_CHECK_MIN_DELAY) {
|
|
||||||
window.location.reload();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function ensureWorkerPing() {
|
||||||
|
try {
|
||||||
|
await Promise.race([
|
||||||
|
makeRequest({ type: 'ping' }),
|
||||||
|
pause(HEALTH_CHECK_TIMEOUT).then(() => Promise.reject(new Error('HEALTH_CHECK_TIMEOUT'))),
|
||||||
|
]);
|
||||||
|
} catch (err) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.error(err);
|
||||||
|
|
||||||
|
if (Date.now() - startedAt >= HEALTH_CHECK_MIN_DELAY) {
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user