ipcMain
Асинхронное взаимодействие из основного процесса с процессами визуализации.
Процесс: Основной
Модуль ipcMain — это Обработчик событий. При использовании в основном процессе он обрабатывает асинхронные и синхронные сообщения, отправленные из процесса визуализации (веб-страницы). Сообщения, отправленные из процесса визуализации, будут выпущены в этот модуль.
Примеры использования см. в учебнике по IPC.
Отправка сообщений
Также возможно отправлять сообщения из основного процесса в процесс визуализации. Для получения дополнительной информации см. webContents.send.
- При отправке сообщения имя события —
channel. - Для ответа на синхронное сообщение необходимо установить
event.returnValue. - Для отправки асинхронного сообщения обратно отправителю можно использовать
event.reply(...). Этот вспомогательный метод автоматически обрабатывает сообщения, поступающие от фреймов, которые не являются основным фреймом (например, iframes), в то время какevent.sender.send(...)всегда отправляет сообщение в основной фрейм.
Методы
Модуль ipcMain имеет следующие методы для прослушивания событий:
ipcMain.on(channel, listener)
-
channelстрока -
listenerФункция-
eventIpcMainEvent -
...argsany[]
-
Прослушивает channel, когда приходит новое сообщение, вызывается listener с listener(event, args...).
ipcMain.once(channel, listener)
-
channelстрока -
listenerФункция-
eventIpcMainEvent -
...argsany[]
-
Добавляет одноразовую listener функцию для события. Эта listener вызывается только в следующий раз, когда сообщение отправляется в channel, после чего удаляется.
ipcMain.removeListener(channel, listener)
-
channelстрока -
listenerФункция-
...argsany[]
-
Удаляет указанную listener из массива слушателей для указанного channel.
ipcMain.removeAllListeners([channel])
-
channelстрока (необязательно)
Удаляет слушателей указанного channel.
ipcMain.handle(channel, listener)
-
channelстрока -
listenerФункция<Promise\<void> | any>-
eventIpcMainInvokeEvent -
...argsany[]
-
Добавляет обработчик для вызываемого по IPC. Этот обработчик будет вызываться всякий раз, когда процесс визуализации вызывает ipcRenderer.invoke(channel, ...args).
Если listener возвращает 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 является источником запроса вызова.
Ошибки, сгенерированные через handle в основном процессе, не транспарентны, так как они сериализуются, и только свойство message из исходной ошибки предоставляется процессу визуализации. Подробности см. в #24427.
ipcMain.handleOnce(channel, listener)
-
channelстрока -
listenerФункция<Promise\<void> | any>-
eventIpcMainInvokeEvent -
...argsany[]
-
Обрабатывает одно сообщение по вызываемому IPC, а затем удаляет слушателя. См. ipcMain.handle(channel, listener).
ipcMain.removeHandler(channel)
-
channelстрока
Удаляет любой обработчик для channel, если он присутствует.
Объект IpcMainEvent
Документация по объекту event, передаваемому в callback , находится в документации структуры ipc-main-event.
Объект IpcMainInvokeEvent
Документация по объекту event, передаваемому обработчикам handle , находится в документации структуры ipc-main-invoke-event.
© GitHub Inc.
Licensed under the MIT license.
https://www.electronjs.org/docs/latest/api/ipc-main