Spec-Zone.ru › Electron

ipcMain

Асинхронное взаимодействие из основного процесса с процессами визуализации.

Процесс: Основной

Модуль ipcMain — это Обработчик событий. При использовании в основном процессе он обрабатывает асинхронные и синхронные сообщения, отправленные из процесса визуализации (веб-страницы). Сообщения, отправленные из процесса визуализации, будут выпущены в этот модуль.

Примеры использования см. в учебнике по IPC.

Отправка сообщений​

Также возможно отправлять сообщения из основного процесса в процесс визуализации. Для получения дополнительной информации см. webContents.send.

  • При отправке сообщения имя события — channel.
  • Для ответа на синхронное сообщение необходимо установить event.returnValue.
  • Для отправки асинхронного сообщения обратно отправителю можно использовать event.reply(...). Этот вспомогательный метод автоматически обрабатывает сообщения, поступающие от фреймов, которые не являются основным фреймом (например, iframes), в то время как event.sender.send(...) всегда отправляет сообщение в основной фрейм.

Методы​

Модуль ipcMain имеет следующие методы для прослушивания событий:

ipcMain.on(channel, listener)​

  • channel строка
  • listener Функция
    • event IpcMainEvent
    • ...args any[]

Прослушивает channel, когда приходит новое сообщение, вызывается listener с listener(event, args...).

ipcMain.once(channel, listener)​

  • channel строка
  • listener Функция
    • event IpcMainEvent
    • ...args any[]

Добавляет одноразовую listener функцию для события. Эта listener вызывается только в следующий раз, когда сообщение отправляется в channel, после чего удаляется.

ipcMain.removeListener(channel, listener)​

  • channel строка
  • listener Функция
    • ...args any[]

Удаляет указанную listener из массива слушателей для указанного channel.

ipcMain.removeAllListeners([channel])​

  • channel строка (необязательно)

Удаляет слушателей указанного channel.

ipcMain.handle(channel, listener)​

  • channel строка
  • listener Функция<Promise\<void> | any>
    • event IpcMainInvokeEvent
    • ...args any[]

Добавляет обработчик для вызываемого по 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>
    • event IpcMainInvokeEvent
    • ...args any[]

Обрабатывает одно сообщение по вызываемому 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API