электронно-угловая связь

Я создаю угловое приложение, а затем обертываю его с помощью Electron. Структура моего каталога выглядит следующим образом:
Project
|--electron
---|-main.js
-----|-index.html (и другие файлы, скопированные из webapp/ dist)
|--webapp (угловое приложение)
---|-src
-----|-app
-------|-service

Я пробовал межпроцессное взаимодействие (ipcMain и ipcRenderer), но оно зависло! Потом я узнал о webcontent.executeJavascript();

Поэтому я сделал сервис в angular, который имеет различные функции, такие как eventFromHost() и sendMessage().

как мне вызвать эту функцию из main.js электрона, используя веб-контент или любой другой метод?


person lazzy_ms    schedule 22.06.2018    source источник


Ответы (1)


Вы должны использовать ipcMain и ipcRenderer для этого:

В угловом:

ipcMain.send('foo', data);

В электроне:

ipcMain.on('foo', (event, data) => {
  // Do what you want with data.
});

Или то же самое, используя ipcRenderer для связи электрона => angular (ipcMain предназначен для связи от angular к электрону).

Если вы хотите увидеть живой пример, проверьте эту главную .js на github и служба, которая с ним взаимодействует здесь в angular.

person Supamiu    schedule 22.06.2018
comment
уже пробовал, но проблема в том, что я разделил электрон и угловой, поэтому мне нужно установить отдельный экземпляр электрона для обоих, и я не могу общаться! - person lazzy_ms; 22.06.2018
comment
Отдельный экземпляр электрона? в проекте, который я связал, электрон загружается угловым, не зная, что он угловой, поэтому это не должно быть проблемой с разделенным электроном - person Supamiu; 24.06.2018
comment
просмотрите структуру каталога. У меня есть файл package.json в папке электрона и веб-приложения. - person lazzy_ms; 25.06.2018
comment
Это вообще не проблема, потому что электрон по-прежнему загружает ваше угловое приложение, так что, в конце концов, они оба связаны. Если angular работает внутри экземпляра электрона, внутри window.require('electron') будет электрон. см. ipc.service, который я связал с вами, это как для браузера, так и для электрона. Если электрона здесь нет, то сервис не загружается, вот и все. - person Supamiu; 25.06.2018
comment
что-нибудь с webcontent.executeJavascript(); - person lazzy_ms; 26.06.2018