В этом руководстве предполагается, что вы знаете, как установить и настроить проект 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).