2017-01-31 36 views
0

我使用的是電子,它是基於鉻,創建一個脫機桌面應用程序。有沒有辦法創建連接超時來激活服務人員?

該應用程序使用一個遠程站點,我們使用的是服務人員爲脫機網站的部分。除了某種我稱之爲「飛機無線網絡狀況」的情況外,一切工作都很好。

使用查爾斯,我已經限制下載帶寬,以100字節/秒。的連接是通過webview.loadURL在Chromium最終調用LoadURLWithParams發送。問題是它不會失敗,然後激活服務工作者,就像根本沒有連接一樣。一旦請求被髮送,它就會永遠等待響應。

我的問題是,我怎麼超時一定的時間後請求並如果用戶是真正的下線加載一切從服務人員?

+1

[傑克阿奇博爾德](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)特別是[緩存和網絡競賽](https:// jakearchibald。 com/2014/offline-cookbook /#cache-network-race)是你的問題的確切解決方案。 –

+0

感謝Umur,那裏有一些很棒的鏈接! –

回答

1

您自己寫這個的替代方法是使用sw-toolbox庫,該庫爲服務人員提供路由和運行時緩存策略,以及用於幫助處理這些高級用例的一些內置選項。特別是,您希望使用networkTimeoutSeconds parameter來配置在回退到先前緩存的響應之前等待來自網絡的響應的時間量。

您可以使用它像下面這樣:

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

這將配置匹配GET請求包含my-api.com網址和應用的網絡優先策略,它會自動退回到以前緩存的響應路線10秒後。

相關問題