Class: ServiceWorkers
Class: ServiceWorkers
Interroge et reçoit des événements à partir d'un service worker actif d'une session.
Process: Main
This class is not exported from the 'electron' module. Elle n'est disponible qu'en tant que valeur de retour des autres méthodes dans l'API Electron.
Les instances de la classe ServiceWorkers sont accessibles à l'aide de la propriété serviceWorkers d'une Session.
Par exemple :
const { session } = require('electron')
// Récupère tous les service workers.
console.log(session.defaultSession.serviceWorkers.getAllRunning())
// gère les logs et récupère les infos des service worker
session.defaultSession.serviceWorkers.on('console-message', (event, messageDetails) => {
console.log(
'Got service worker message',
messageDetails,
'from',
session.defaultSession.serviceWorkers.getFromVersionID(messageDetails.versionId)
)
})
Événements d’instance
Les événements suivants sont disponibles pour les instances de ServiceWorkers :
Événement : 'console-message'
Retourne :
eventEvent- Objet
messageDetails- Informations sur le message de la consolemessagestring - Message actuel de la consoleversionIdnumber - L'ID de version du service worker qui a envoyé le message de logsourcestring - Le type de source de ce message. Peut prendre une des valeurs suivantes:javascript,xml,network,console-api,storage,rendering,security,deprecation,worker,violation,intervention,recommendationou,other, , ,, , ,.levelInteger - Le niveau de logging, de 0 à 3. Correspondant dans l'ordre croissant àverbose,info,warningeterror.- Chaîne
sourceUrl- L'URL de laquelle le message a été envoyé lineNumbernumber - Le numéro de ligne du source qui a déclenché ce message de la console
Émis lorsqu'un service worker log quelque chose dans la console.
Événement : 'registration-completed'
Retourne :
eventEvent- Objet
details- Informations sur le service worker enregistréscopestring - L'URL de base pour laquelle un service worker est enregistré
Émis lorsqu'un service worker a été enregistré. Peut se produire après un appel à navigator.serviceWorker.register('/sw.js') qui se résout avec succès ou quand une extension Chrome est chargée.
Event: 'running-status-changed' Experimental
Retourne :
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.
Méthodes d’instance
Les méthodes suivants sont disponibles pour les instances de 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
Si le service worker n'existe pas ou n'exécute pas cette méthode, une exception sera levée.
serviceWorkers.getFromVersionID(versionId) __ obsolète
versionIdnumber - ID of the service worker version
Returns ServiceWorkerInfo - Information about this service worker
Si le service worker n'existe pas ou n'exécute pas cette méthode, une exception sera levée.
Deprecated: Use the new serviceWorkers.getInfoFromVersionID API.
serviceWorkers.getWorkerFromVersionID(versionId) Experimental
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) Expérimental
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)
}
}
})