ipcMain
Se comunica de forma asincrónica desde el proceso principal a los procesos de renderizado.
Process: Main
El módulo ipcMain
es un Event Emitter. Cuando se utiliza en el proceso principal, maneja mensajes asincrónicos y sincrónicos enviados desde el proceso de renderizado (página web). Los mensajes enviados desde el renderizador serán emitidos a este módulo.
For usage examples, check out the IPC tutorial.
Sending messages
También es posible enviar mensajes desde el proceso principal al proceso de renderizado, ver webContents.send para más información.
- Cuando se envía un mensaje, el nombre del evento es el
channel
. - Para responder a un mensaje sincrónico, es necesario establecer
event.returnValue
. - Para enviar un mensaje asíncrono de vuelta al emisor, puede usar
event.reply(...)
. Este método de ayuda automáticamente va a manejar los mensajes entrantes desde frames que no son el frame principal (ejemplo iframes) mientras queevent.sender.send(...)
siempre enviará al frame principal.
Métodos
El módulo ipcMain
tiene el siguiente método para escuchar los eventos:
ipcMain.on(channel, listener)
channel
cadenalistener
Funciónevent
IpcMainEvent...args
any[]
Escucha al channel
. Cuando llega un nuevo mensaje listener
es llamado con listener(event, args...)
.
ipcMain.once(channel, listener)
channel
cadenalistener
Funciónevent
IpcMainEvent...args
any[]
Adds a one time listener
function for the event. This listener
is invoked only the next time a message is sent to channel
, after which it is removed.
ipcMain.removeListener(channel, listener)
channel
cadenalistener
Función...args
any[]
Elimina el listener
especificado del arreglo listener para el channel
especificado.
ipcMain.removeAllListeners([channel])
channel
cadena (opcional)
Elimina los oyentes del channel
especificado.
ipcMain.handle(channel, listener)
channel
cadenalistener
Function<Promise<any> | any>event
IpcMainInvokeEvent...args
any[]
Adds a handler for an invoke
able IPC. This handler will be called whenever a renderer calls ipcRenderer.invoke(channel, ...args)
.
Si listener
devuelve una Promise, el eventual resultado de la promise será devuelto como una respuesta al controlador remoto. De lo contrario, el valor de retorno del listener será usado como el valor de la respuesta.
ipcMain.handle('my-invokable-ipc', async (event, ...args) => {
const result = await somePromise(...args)
return result
})
async () => {
const result = await ipcRenderer.invoke('my-invokable-ipc', arg1, arg2)
// ...
}
El event
que es pasado como primer argumento al handler es el mismo que es pasado a un event listener normal. Incluye información sobre cual WebContents es el origen de la solicitud invocada.
Los errores lanzados a través de handle
en el main process no son transparentes, ya que se serializan y solo la propiedad message
del error original es proveído al renderer process. Por favor, consulte #24427 para más detalles.
ipcMain.handleOnce(channel, listener)
channel
cadenalistener
Function<Promise<any> | any>event
IpcMainInvokeEvent...args
any[]
Maneja un solo invoke
able mensaje IPC, luego elimina el listener. See ipcMain.handle(channel, listener)
.
ipcMain.removeHandler(channel)
channel
cadena
Elimina cualquier controlador para channel
, si hay.