2017-01-31 11 views
0

Я использую Electron, основанный на Chromium, для создания автономного рабочего стола.Есть ли способ создать тайм-аут соединения, чтобы активировать сервис-работника?

Приложение использует удаленный сайт, и мы используем сервисного работника в автономных частях сайта. Все работает отлично, за исключением определенной ситуации, которую я называю «ситуацией с Wi-Fi самолета».

Использование Charles, я ограничил ширину полосы пропускания до 100bytes/s. Соединение отправляется через webview.loadURL, который в итоге вызывает LoadURLWithParams в Chromium. Проблема в том, что она не сработает, а затем активирует сервисного работника, как и вообще никакого соединения. Как только запрос отправляется, он ждет навсегда ответа.

Вопрос в том, как я могу запросить тайм-аут после определенного количества времени и загрузить все от рабочего, как если бы пользователь действительно был в сети?

+1

[Jake Archibald] (http://stackoverflow.com/users/123395/jaffa-the-cake) имеет [отличную статью] (https://jakearchibald.com/2014/offline-cookbook/) о предмет. Часть для вас - [Служебные предложения] (https://jakearchibald.com/2014/offline-cookbook/#serving-suggestions-responding-to-requests), особенно [Cache & network race] (https: // jakearchibald. com/2014/offline-cookbook/# cache-network-race) - это точное решение вашей проблемы. –

+0

Спасибо Умуру, некоторые отличные ссылки там! –

ответ

1

Альтернативой написанию этого является использование библиотеки sw-toolbox, которая предоставляет стратегии кэширования маршрутизации и времени выполнения для рабочих-служб, а также некоторые встроенные опции для помощи в этих типах расширенных вариантов использования. В частности, вы хотите использовать networkTimeoutSeconds parameter, чтобы настроить время ожидания ответа от сети, прежде чем вернуться к ранее кэшированному ответу.

Вы можете использовать его как следующее:

toolbox.router.get(
    new RegExp('my-api\\.com'), 
    toolbox.networkFirst, { 
    networkTimeoutSeconds: 10 
    } 
); 

Это было бы настроить маршрут, который соответствовал GET запросов с URL-адресов, содержащих my-api.com, и применяется к сети, первая стратегия, которая будет автоматически падать обратно к ранее сохраненным ответ через 10 секунд.