Saltar al contenido principal

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 elchannel.
  • 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 que event.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 cadena
  • listener Función

Escucha al channel. Cuando llega un nuevo mensaje listener es llamado con listener(event, args...).

ipcMain.once(channel, listener)

  • channel cadena
  • listener Función

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 cadena
  • listener 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 cadena
  • listener Function<Promise<any> | any>

Adds a handler for an invokeable 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.

Main Process
ipcMain.handle('my-invokable-ipc', async (event, ...args) => {
const result = await somePromise(...args)
return result
})
Renderer Process
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 cadena
  • listener Function<Promise<any> | any>

Maneja un solo invokeable mensaje IPC, luego elimina el listener. See ipcMain.handle(channel, listener).

ipcMain.removeHandler(channel)

  • channel cadena

Elimina cualquier controlador para channel, si hay.