メインコンテンツへ飛ぶ

ServiceWorkerを有効にする

ServiceWorkerを有効にする

session のアクティブなサービスワーカーからのイベントを問い合わせて受信します。

プロセス: メイン
このクラスは 'electron' モジュールからはエクスポートされません。 Electron API では、他のメソッドの戻り値としてのみ利用できます。

ServiceWorkers クラスのインスタンスは、SessionserviceWorkers プロパティを使用してアクセスします。

以下がその例です。

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'

戻り値:

  • event Event
  • messageDetails Object - コンソールメッセージに関する情報
    • message string - 実際のコンソールメッセージ
    • versionId number - ログメッセージを送信したサービスワーカーのバージョン ID
    • source string - このメッセージのソースの種別。 javascriptxmlnetworkconsole-apistoragerenderingsecuritydeprecationworkerviolationinterventionrecommendationother のいずれかにできます。
    • level number - 0 から 3 のログレベル。 順に verboseinfowarningerror に対応します。
    • sourceUrl string - メッセージが送られてきた URL
    • lineNumber number - このコンソールメッセージのトリガーとなったソースの行番号

サービスワーカーがコンソールに何かをロギングしたときに発生します。

イベント: 'registration-completed'

戻り値:

  • event Event
  • details Object - 登録されているサービスワーカーに関する情報
    • scope string - サービスワーカーが登録している基底 URL

サービスワーカーが登録されてたときに発生します。 navigator.serviceWorker.register('/sw.js') の呼び出しが成功した後や、Chrome 拡張機能が読み込まれた後に発生することがあります。

イベント: 'running-status-changed' 実験的

戻り値:

  • details Event<>
    • versionId number - 更新されたサービスワーカーのバージョンの ID
    • runningStatus string - 実行ステータス。 取りうる値は starting,running, stopping, stopped です。

サービスワーカーの実行ステータスが変更されたときに発生します。

インスタンスメソッド

ServiceWorkers のインスタンスでは、以下のメソッドが利用できます。

serviceWorkers.getAllRunning()

戻り値 Record<number, ServiceWorkerInfo> - ServiceWorkerInfo オブジェクトで、キーはサービスワーカーのバージョン ID、値はそのサービスワーカーに関する情報です。

serviceWorkers.getInfoFromVersionID(versionId)

  • versionId number - サービスワーカーのバージョンの ID

戻り値 ServiceWorkerInfo - このサービスワーカーについての情報

サービスワーカーが存在しないか動作していない場合、このメソッドは例外を送出します。

serviceWorkers.getFromVersionID(versionId) 非推奨

  • versionId number - サービスワーカーのバージョンの ID

戻り値 ServiceWorkerInfo - このサービスワーカーについての情報

サービスワーカーが存在しないか動作していない場合、このメソッドは例外を送出します。

非推奨: 新しい serviceWorkers.getInfoFromVersionID API を使用してください。

serviceWorkers.getWorkerFromVersionID(versionId) 実験的

  • versionId number - サービスワーカーのバージョンの ID

戻り値 ServiceWorkerMain | undefined - 指定バージョン ID に関連付けられたサービスワーカーのインスタンス。 関連付けられているバージョンがない場合、または実行ステータスが 'stopped' に変更された場合は、undefined が返されます。

serviceWorkers.startWorkerForScope(scope) 実験的

  • scope string - 開始するサービスワーカーのスコープ。

戻り値 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)
}
}
})