メインコンテンツへ飛ぶ

ServiceWorkerを有効にする

ServiceWorkerを有効にする

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

Process: Main
This class is not exported from the 'electron' module. 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 拡張機能が読み込まれた後に発生することがあります。

Event: 'running-status-changed' Experimental

戻り値:

  • details Event<>
    • versionId number - ID of the updated service worker version
    • runningStatus string - Running status. Possible values include starting, running, stopping, or stopped.

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)

  • versionId number - ID of the service worker version

Returns ServiceWorkerInfo - Information about this service worker

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

serviceWorkers.getFromVersionID(versionId) 非推奨

  • versionId number - ID of the service worker version

Returns ServiceWorkerInfo - Information about this service worker

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

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

serviceWorkers.getWorkerFromVersionID(versionId) 実験的

  • versionId number - 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) 実験的

  • scope string - 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)
}
}
})