ipcMain
Асинхронно взаимодействуйте с процессами рендеринга из главного процесса.
Process: Main
Модуль ipcMain представляет собой Event Emitter. При использовании в основном процессе он обрабатывает асинхронные и синхронные сообщения, отправленные из процесса рендеринга (веб-страницы). Сообщения, отправленные из процесса рендеринга, будут направлены в этот модуль.
For usage examples, check out the IPC tutorial.
Отправка сообщений
It is also possible to send messages from the main process to the renderer process, see webContents.send for more information.
- При отправке сообщения, событие именуется
channel. - Чтобы ответить на синхронное сообщение, нужно задать
event.returnValue. - Чтобы отправить ассинхронное сообщение назад отправителю, используйте
event.reply(...). Этот вспомогательный метод автоматически обрабатывает сообщения, поступающие из фреймов, которые не являются основным фреймом (например, iframe), в то время какevent.sender.send(...)всегда будет посылать в основной фрейм.
Методы
The ipcMain module has the following methods to listen for events:
ipcMain.on(channel, listener)
channelstring (Строка)listenerFunction (Функция)eventIpcMainEvent...argsany[]
Слушает channel, когда приходит новое сообщение listener вызовется с listener(event, args...).
ipcMain.off(channel, listener)
channelstring (Строка)listenerFunction (Функция)eventIpcMainEvent...argsany[]
Удаляет указанный listener из массива слушателей конкретного channel.
ipcMain.once(channel, listener)
channelstring (Строка)listenerFunction (Функция)eventIpcMainEvent...argsany[]
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)
channelstring (Строка)listenerFunction (Функция)eventIpcMainEvent...argsany[]
Alias for ipcMain.on.
ipcMain.removeListener(channel, listener)
channelstring (Строка)listenerFunction (Функция)...argsany[]
Alias for ipcMain.off.
ipcMain.removeAllListeners([channel])
channelstring (опционально)
Removes all listeners from the specified channel. Removes all listeners from all channels if no channel is specified.
ipcMain.handle(channel, listener)
channelstring (Строка)listenerFunction<Promise<any> | any>eventIpcMainInvokeEvent...argsany[]
Adds a handler for an invokeable IPC. This handler will be called whenever a renderer calls ipcRenderer.invoke(channel, ...args).
Если listener возвращает Promise, то конечный результат Promise, будет возвращен в качестве ответа удаленному вызывающему объекту. В противном случае, возвращаемое значение слушателя будет использоваться как значение ответа.
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)
// ...
}
event, которое передается обработчику в качестве первого аргумента, такое же, какое передается обычному прослушивателю событий. Оно включает информацию о том, какой WebContents является источником запроса на вызов.
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)
channelstring (Строка)listenerFunction<Promise<any> | any>eventIpcMainInvokeEvent...argsany[]
Handles a single invokeable IPC message, then removes the listener. See ipcMain.handle(channel, listener).
ipcMain.removeHandler(channel)
channelstring (Строка)
Удаляет обработчик для channel, если он присутствует.