ServiceWorkerを有効にする
ServiceWorkerを有効にする
session のアクティブなサービスワーカーからのイベントを問い合わせて受信します。
Process: Main
This class is not exported from the 'electron' module. Electron API では、他のメソッドの戻り値としてのみ利用できます。
ServiceWorkers クラスのインスタンスは、Session の serviceWorkers プロパティを使用してアクセスします。
以下がその例です。
const { session } = require('electron')
// すべてのサービスワーカーを取得します。
console.log(session.defaultSession.serviceWorkers.getAllRunning())
// ログを処理してサービスワーカー情報を取得します
session.defaultSession.serviceWorkers.on('console-message', (event, messageDetails) => {
console.log(
'Got service worker message',
messageDetails,
'from',
session.defaultSession.serviceWorkers.getFromVersionID(messageDetails.versionId)
)
})
インスタンスイベント
ServiceWorkers のインスタンスでは、以下のイベントが利用できます。
Event: 'console-message'
戻り値:
eventEventmessageDetailsObject - コンソールメッセージに関する情報messagestring - 実際のコンソールメッセージversionIdnumber - ログメッセージを送信したサービスワーカーのバージョン IDsourcestring - このメッセージのソースの種別。javascript、xml、network、console-api、storage、rendering、security、deprecation、worker、violation、intervention、recommendation、otherのいずれかにできます。levelnumber - 0 から 3 のログレベル。 順にverbose、info、warning、errorに対応します。sourceUrlstring - メッセージが送られてきた URLlineNumbernumber - このコンソールメッセージのトリガーとなったソースの行番号
サービスワーカーがコンソールに何かをロギングしたときに発生します。
イベント: 'registration-completed'
戻り値:
eventEventdetailsObject - 登録されているサービスワーカーに関する情報scopestring - サービスワーカーが登録している基底 URL
サービスワーカーが登録されてたときに発生します。 navigator.serviceWorker.register('/sw.js') の呼び出しが成功した後や、Chrome 拡張機能が読み込まれた後に発生することがあります。
Event: 'running-status-changed' Experimental
戻り値:
detailsEvent<>versionIdnumber - ID of the updated service worker versionrunningStatusstring - Running status. Possible values includestarting,running,stopping, orstopped.
Emitted when a service worker's running status has changed.
インスタンスメソッド
ServiceWorkers のインスタンスでは、以下のメソッドが利用できます。
serviceWorkers.getAllRunning()
Returns Record<number, ServiceWorkerInfo> - A ServiceWorkerInfo object where the keys are the service worker version ID and the values are the information about that service worker.
serviceWorkers.getInfoFromVersionID(versionId)
versionIdnumber - ID of the service worker version
Returns ServiceWorkerInfo - Information about this service worker
サービスワーカーが存在しないか動作していない場合、このメソッドは例外を送出します。
serviceWorkers.getFromVersionID(versionId) 非推奨
versionIdnumber - ID of the service worker version
Returns ServiceWorkerInfo - Information about this service worker
サービスワーカーが存在しないか動作していない場合、このメソッドは例外を送出します。
非推奨: 新しい serviceWorkers.getInfoFromVersionID API を使用してください。
serviceWorkers.getWorkerFromVersionID(versionId) 実験的
versionIdnumber - ID of the service worker version
Returns ServiceWorkerMain | undefined - Instance of the service worker associated with the given version ID. If there's no associated version, or its running status has changed to 'stopped', this will return undefined.
serviceWorkers.startWorkerForScope(scope) 実験的
scopestring - The scope of the service worker to start.
Returns Promise<ServiceWorkerMain> - Resolves with the service worker when it's started.
Starts the service worker or does nothing if already running.
const { app, session } = require('electron')
const { serviceWorkers } = session.defaultSession
// Collect service workers scopes
const workerScopes = Object.values(serviceWorkers.getAllRunning()).map((info) => info.scope)
app.on('browser-window-created', async (event, window) => {
for (const scope of workerScopes) {
try {
// Ensure worker is started
const serviceWorker = await serviceWorkers.startWorkerForScope(scope)
serviceWorker.send('window-created', { windowId: window.id })
} catch (error) {
console.error(`Failed to start service worker for ${scope}`)
console.error(error)
}
}
})