В этом руководстве предполагается, что вы знаете, как установить и настроить проект electronic-quick-start. Вы можете найти руководство здесь.

Модуль ipc (межпроцессное взаимодействие) позволяет отправлять и получать синхронные и асинхронные сообщения между основным процессами и процессами рендеринга.

Чтобы использовать ipc от средства визуализации к основному процессу, вы можете использовать модуль ipcRenderer, а наоборот (то есть от основного к процессу визуализации), вы можете использовать ipcMain модуль.

Мы рассмотрим, как отправить асинхронное сообщение от рендерера в главный. Затем мы ответим процессу визуализации. Сначала перейдем к нашему файлу renderer.js.

Начнем с того, что потребуем «электронный» пакет, воспользуемся деструктуризацией, чтобы получить модуль ipcRenderer из пакета и определить его как константу. Затем мы используем метод ipcRenderer.send, где указываем имя канала для отправки (в нашем случае это будет канал asynchronous-message и листинг arguments в качестве следующего параметра.

// renderer.js
const {ipcRenderer} = require(‘electron’)
ipcRenderer.send(‘asynchronous-message’, ‘hello’)

Теперь мы будем прослушивать сообщение в основном процессе, поэтому давайте откроем файл main.js. Здесь мы аналогичным образом определяем новую константу ipcMain и назначаем ее electronic.ipcMain. Теперь мы вызываем метод ipcMain.on и указываем канал, который мы слушаем (в нашем случае это будет канал асинхронного сообщения. Второй параметр будет анонимная функция с двумя параметрами, событием и аргументами. Теперь мы просто отображаем сообщение из аргументов, регистрируя его в консоли.

// main.js
const ipcMain = electron.ipcMain
ipcMain.on(‘asynchronous-message’, (event, args) => {
 console.log(args)
})

Чтобы отправить асинхронное сообщение обратно, мы можем использовать переданное событие и вызвать метод event.sender.send и передать канал «asynchronous-reply» и сообщение «world». Это отправит асинхронное сообщение обратно процессу рендеринга.

// main.js
event.sender.send(‘asynchronous-reply’, ‘world’)

Теперь последнее, что нам нужно сделать, это прослушать наше ответное сообщение в файле renderer.js. Здесь мы используем метод ipcRenderer.on, канал «асинхронного ответа», и указываем анонимную функцию. Внутри функции мы console.log ответ.

// renderer.js
ipcRenderer.on(‘asynchronous-reply’, (event, arg) => {
   console.log(arg) // prints “pong”
})

Чтобы увидеть ответ, откройте DevTools внутри BrowserWindow (CtrlCmd + Shift + I).