Clase: ServiceWorkers
Clase: ServiceWorkers
Query and receive events from a sessions active service workers.
Process: Main
This class is not exported from the 'electron'
module. Sólo está disponible como un valor de retorno de otros métodos en la API de Electron.
Las instancias de la clase ServiceWorkers
son accedidas utilizado la propiedad serviceWorkers
de una Session
.
Por ejemplo:
const { session } = require('electron')
// Get all service workers.
console.log(session.defaultSession.serviceWorkers.getAllRunning())
// Handle logs and get service worker info
session.defaultSession.serviceWorkers.on('console-message', (event, messageDetails) => {
console.log(
'Got service worker message',
messageDetails,
'from',
session.defaultSession.serviceWorkers.getFromVersionID(messageDetails.versionId)
)
})
Eventos de Instancia
Los siguientes eventos están disponibles en instancias de ServiceWorkers
:
Evento: 'console-message'
Devuelve:
event
messageDetails
Object - Information about the console messagemessage
string - The actual console messageversionId
number - The version ID of the service worker that sent the log messagesource
string - The type of source for this message. Can bejavascript
,xml
,network
,console-api
,storage
,rendering
,security
,deprecation
,worker
,violation
,intervention
,recommendation
orother
.level
number - The log level, from 0 to 3. In order it matchesverbose
,info
,warning
anderror
.sourceUrl
string - The URL the message came fromlineNumber
number - The line number of the source that triggered this console message
Emitted when a service worker logs something to the console.
Evento: 'registration-completed'
Devuelve:
event
details
Object - Información sobre el service worker registradoscope
string - La URL base para la que un service worker está registrada
Emitido cuando un service worker ha sido registrado. Puede ocurrir después de una llama a navigator.serviceWorker.register('/sw.js')
se resuelve con éxito o cuando una extensión de Chrome es cargada.
Event: 'running-status-changed' Experimental
Devuelve:
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étodos de Instancia
Lo siguientes métodos están disponibles en instancias 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
If the service worker does not exist or is not running this method will throw an exception.
serviceWorkers.getFromVersionID(versionId)
Obsoleto
versionId
number - ID of the service worker version
Returns ServiceWorkerInfo - Information about this service worker
If the service worker does not exist or is not running this method will throw an exception.
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)
Experimental
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)
}
}
})