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ährendevent.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
stringlistener
Funktionevent
IpcMainEvent...args
any[]
Hört channel
ab, wenn eine neue Nachricht eintrifft wird listener
mit listener(event, args...)
aufgerufen.
ipcMain.once(channel, listener)
channel
stringlistener
Funktionevent
IpcMainEvent...args
any[]
Fügt einen einmaligen listener
-Funktion für das Ereignis hinzu. Diese listener
wird nur aufgerufen, wenn das nächste Mal eine Nachricht an channel
gesendet wird, danach wird sie entfernt.
ipcMain.removeListener(channel, listener)
channel
stringlistener
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
stringlistener
Function<Promise<any> | any>event
IpcMainInvokeEvent...args
any[]
Fügt einen Handler für einen invoke
fä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.
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)
// ...
}
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
stringlistener
Function<Promise<any> | any>event
IpcMainInvokeEvent...args
any[]
Handles a single invoke
able IPC message, then removes the listener. See ipcMain.handle(channel, listener)
.
ipcMain.removeHandler(channel)
channel
string
Removes any handler for channel
, if present.