Zum Inhalt springen

ipcMain

Kommunizieren Sie asynchron vom Hauptprozess zum Rendererprozess.

Prozess: Haupt

Das ipcMain -Modul ist ein Event Emitter. Wenn es im Hauptprozess verwendet wird, verarbeitet es asynchrone und synchrone Nachrichten, die von einem Renderer Prozess (Webseite) gesendet werden. Nachrichten, die von einem Renderer gesendet werden, werden an dieses Modul übergegeben.

For usage examples, check out the IPC tutorial.

Sending messages

Es ist auch möglich, Nachrichten vom Hauptprozess an den Rendererprozess zu senden. Siehe webContents.send für weitere Informationen.

  • Beim Senden einer Nachricht ist der Ereignisname der channel.
  • Um auf eine synchrone Nachricht zu antworten, müssen Sie event.returnValue festlegen.
  • Um eine asynchrone Nachricht an den Absender zurückzusenden, können Sie event.reply(...)verwenden. Diese Hilfsmethode verarbeitet automatisch Nachrichten, die von Frames kommen, die nicht der Hauptframe sind (z. B. iframes), während event.sender.send(...) immer an den Hauptframe sendet.

Methoden

Das ipcMain -Modul verfügt über die folgende Methode zum Überwachen von Ereignissen:

ipcMain.on(channel, listener)

  • channel string
  • listener Funktion

Hört channelab, wenn eine neue Nachricht eintrifft wird listener mit listener(event, args...) aufgerufen.

ipcMain.once(channel, listener)

  • channel string
  • listener Funktion

Fügt einen einmaligen listener-Funktion für das Ereignis hinzu. Diese listener wird nur aufgerufen, wenn das nächste Mal eine Nachricht an channelgesendet wird, danach wird sie entfernt.

ipcMain.removeListener(channel, listener)

  • channel string
  • listener Funktion
    • ...args any[]

Entfernt den angegebenen listener aus dem Listener-Array für den angegebenen channel.

ipcMain.removeAllListeners([channel])

  • channel string (optional)

Entfernt alle Listener des angegebenen channel.

ipcMain.handle(channel, listener)

  • channel string
  • listener Function<Promise\<void> | any>

Fügt einen Handler für einen invokefähigen IPC hinzu. Dieser Handler wird immer dann aufgerufen, wenn ein Renderer ipcRenderer.invoke(channel, ...args) aufruft.

If listener returns a Promise, the eventual result of the promise will be returned as a reply to the remote caller. Otherwise, the return value of the listener will be used as the value of the reply.

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)
// ...
}

The event that is passed as the first argument to the handler is the same as that passed to a regular event listener. It includes information about which WebContents is the source of the invoke request.

Errors thrown through handle in the main process are not transparent as they are serialized and only the message property from the original error is provided to the renderer process. Please refer to #24427 for details.

ipcMain.handleOnce(channel, listener)

  • channel string
  • listener Function<Promise\<void> | any>
    • event IpcMainInvokeEvent
    • ...args any[]

Handles a single invokeable IPC message, then removes the listener. See ipcMain.handle(channel, listener).

ipcMain.removeHandler(channel)

  • channel string

Removes any handler for channel, if present.

IpcMainEvent object

The documentation for the event object passed to the callback can be found in the ipc-main-event structure docs.

IpcMainInvokeEvent object

The documentation for the event object passed to handle callbacks can be found in the ipc-main-invoke-event structure docs.