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 :
event
Event- Objet
messageDetails
- Informations sur le message de la consolemessage
string - Message actuel de la consoleversionId
number - L'ID de version du service worker qui a envoyé le message de logsource
string - 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
,recommendation
ou,other
, , ,, , ,.level
Integer - Le niveau de logging, de 0 à 3. Correspondant dans l'ordre croissant àverbose
,info
,warning
eterror
.- Chaîne
sourceUrl
- L'URL de laquelle le message a été envoyé lineNumber
number - 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 :
event
Event- Objet
details
- Informations sur le service worker enregistréscope
string - 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 :
details
Event<>versionId
number - ID of the updated service worker versionrunningStatus
string - 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)
versionId
number - 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
versionId
number - 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
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)
Expérimental
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)
}
}
})