ServiceWorkerを有効にする
ServiceWorkerを有効にする
session のアクティブなサービスワーカーからのイベントを問い合わせて受信します。
プロセス: メイン
このクラスは 'electron' モジュールからはエクスポートされません。 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 拡張機能が読み込まれた後に発生することがあります。
イベント: 'running-status-changed' 実験的
戻り値:
detailsEvent<>versionIdnumber - 更新されたサービスワーカーのバージョンの IDrunningStatusstring - 実行ステータス。 取りうる値はstarting,running,stopping,stoppedです。
サービスワーカーの実行ステータスが変更されたときに発生します。
インスタンスメソッド
ServiceWorkers のインスタンスでは、以下のメソッドが利用できます。
serviceWorkers.getAllRunning()
戻り値 Record<number, ServiceWorkerInfo> - ServiceWorkerInfo オブジェクトで、キーはサービスワーカーのバージョン ID、値はそのサービスワーカーに関する情報です。
serviceWorkers.getInfoFromVersionID(versionId)
versionIdnumber - サービスワーカーのバージョンの ID
戻り値 ServiceWorkerInfo - このサービスワーカーについての情報
サービスワーカーが存在しないか動作していない場合、このメソッドは例外を送出します。
serviceWorkers.getFromVersionID(versionId) 非推奨
versionIdnumber - サービスワーカーのバージョンの ID
戻り値 ServiceWorkerInfo - このサービスワーカーについての情報
サービスワーカーが存在しないか動作していない場合、このメソッドは例外を送出します。
非推奨: 新しい serviceWorkers.getInfoFromVersionID API を使用してください。
serviceWorkers.getWorkerFromVersionID(versionId) 実験的
versionIdnumber - サービスワーカーのバージョンの ID
戻り値 ServiceWorkerMain | undefined - 指定バージョン ID に関連付けられたサービスワーカーのインスタンス。 関連付けられているバージョンがない場合、または実行ステータスが 'stopped' に変更された場合は、undefined が返されます。
serviceWorkers.startWorkerForScope(scope) 実験的
scopestring - 開始するサービスワーカーのスコープ。
戻り値 Promise<ServiceWorkerMain> - サービスワーカーが開始されると解決されます。
そのサービスワーカーを起動します。すでに実行中の場合は何もしません。
const { app, session } = require('electron')
const { serviceWorkers } = session.defaultSession
// サービスワーカーのスコープを収集します
const workerScopes = Object.values(serviceWorkers.getAllRunning()).map((info) => info.scope)
app.on('browser-window-created', async (event, window) => {
for (const scope of workerScopes) {
try {
// ワーカーが起動したことを確かめます
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)
}
}
})