Angularjs send/recieve messages electron

vasilev

Registered
Здравейте,
Имам едно уеб приложение което искам да направя native с електрон.
Използвам angularjs за get/ post заявки към php.
Трябва да го направя с messages , но не мога да намеря за angularjs нищо по темата.
Някой да е правил подобно нещо ?
В електрон се използва ipcrenderer но въпроса е в angularjs как ..



Мерси !
 
Не съм използвал нито едно от двете, но като чета документацията на Electron за messages, се опитвам да разбера защо навръзваш angularjs с това как electron оперира между процесите?

П.П. По това, което чета, на теб ти трябва listener на ipcMain да слуша за събитие, което трябва да накара angularjs да си изпрати request-а и след това, върнатия резултат, можеш да пратиш обратно на renderer-а отново чрез събитие.

Каква е точно идеята ти?
 
Здравей,
Може и да говорим за същото, не съм сигурен :)
Трябва да мигрираме php то което всъщност вика java с json argument и връща друг json. С angularjs съм направил самото приложение и се надявах само това да сменя - angularjs да комуникира с electron с post или get заявка..

В angularjs имам:

[js]$http({ method: 'GET', headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=utf-8'
},
url: './assets/data/info.json'
}).then(function successCallback(response) {
if(response.data.success=="yes"){
$scope.data=response.data;
} else { alert("problem getting the data"); }
});[/js]
 
За себе си просто искам да структурирам нещата малко.

Имаш следното:

1. API - PHP базиран, който на определени endpoints комуникира с друго API, което е Java базирано.
2. Уеб приложение - Angular базирано, което прави AJAX рекуести към PHP API-то и получава някакъв response.

От това, което разбирам е, че уеб приложението, което е писано на Angular трябва да се мигрира към нативно приложение посредством Electron?
Т.е. PHP и Java АПИ-тата си остават същите?

Това, което ти мисля, че е следното. До колкото разбирам Електрон, workflow-а му е следния:

Renderer -> Main -> Renderer

т.е. на теб ти трябват поне 3 събития

1. Регистрираш събитие в ipcMain, което трябва да стартира дадения от теб angularjs код, когато бъде извикано събитието.
Да речем:
[js]
ipc.on("update", (e, args) => {
// angular ajax request
// при успех, трябва да върнеш response-а към рендерера отново
// чрез събитие
ipc.send("response-received", args);
});
[/js]

2. В ipcRenderer трябва да регистрираш някакво събитие. Кликане на бутон, промяна на select меню или нещо подобно. Стандартно събитие в JS. За примера, да речем, че е кликане на бутон.
2.1. Когато бутона се кликне, трябва да тригърне т.1
[js]
btn.addEventListener("click", (e) => {
// нещо подобно. Както виждаш, тригърва събитие с име, което
// регистрирах в т.1
ipc.send("update", "някакъв-аргумент-тук");
});
[/js]

3. В ipcRenderer регистрираш друго събитие. ipc събитие този път, което ще наречем response-received.
[js]
ipc.on("response-received", (e, args) => {
// тука ъпдейтваш някой елемент в HTML-а или нещо подобно.
});
[/js]

Кода може би не е точен, по документация, но се надявам, че схващаш идеята каква е.

Съжалявам, ако не съм разбрал правилно проблема ти.
 
здравей,
благодаря за отговора.
да идеята е тази но, да се разкара PHP - то .
то в момента работи като backend .. трябва да го разкарам и мигрирам на електрон.
в main.js е ясно да - за ipcRenderer.
това което не намирам е какво да напиша в angularjs там където използвам ПОСТ/ГЕТ заявка в момента.
намирам само :

https://github.com/develephant/ngElectron

тоест трябва да използвам допълнителен модул.
въпроса е дали няма нещо което да използвам от angularjs а не да вкарвам допълнителни модули.

Или ipc e стандартна функция която може да ползвам без да описвам в angularjs също ?
 
Ами не виждам или не разбирам цялостната идея на Angular тука. Ако целта е само да го използваш, колкото да изпратиш заявка и да получиш отговор, е безсмислено.

Ако искаш целия Електрон да се управлява посредством Angular - контролери, вюта и прочие - най-вероятно ще ти трябва някакъв модул.

За съжаление повече не мога да помогна. Отговорите ми бяха базирани на малко четене по документацията на Електрон.


П.П. Погледни този boilerplate. Може да ти дойде идея какво трябва да направиш.
 

Горе