Saltar al contenido principal

ipcMain

Se comunica de forma asincrónica desde el proceso principal a los procesos de renderizado.

Proceso: principal

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

It is also possible to send messages from the main process to the renderer process, see webContents.send for more information.

  • 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

The ipcMain module has the following methods to listen for events:

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.off(channel, listener)

  • channel cadena
  • listener Función

Elimina el listener especificado del arreglo listener para el channel especificado.

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.addListener(channel, listener)

  • channel cadena
  • listener Función

Alias for ipcMain.on.

ipcMain.removeListener(channel, listener)

  • channel cadena
  • listener Función
    • ...args any[]

Alias for ipcMain.off.

ipcMain.removeAllListeners([channel])

  • channel cadena (opcional)

Removes all listeners from the specified channel. Removes all listeners from all channels if no channel is specified.

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.