Page 1 of 1

Angularjs send/recieve messages electron

Posted: Sat Nov 23, 2019 8:59 am
by vasilev
Здравейте,
Имам едно уеб приложение което искам да направя native с електрон.
Използвам angularjs за get/ post заявки към php.
Трябва да го направя с messages , но не мога да намеря за angularjs нищо по темата.
Някой да е правил подобно нещо ?
В електрон се използва ipcrenderer но въпроса е в angularjs как ..



Мерси !

Posted: Sat Nov 23, 2019 11:06 am
by Revelation
Не съм използвал нито едно от двете, но като чета документацията на Electron за messages, се опитвам да разбера защо навръзваш angularjs с това как electron оперира между процесите?

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

Каква е точно идеята ти?

Posted: Sun Nov 24, 2019 6:54 pm
by vasilev
Здравей,
Може и да говорим за същото, не съм сигурен :)
Трябва да мигрираме 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]

Posted: Mon Nov 25, 2019 12:48 am
by Revelation
За себе си просто искам да структурирам нещата малко.

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

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]

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

Съжалявам, ако не съм разбрал правилно проблема ти.

Posted: Mon Nov 25, 2019 9:31 am
by vasilev
здравей,
благодаря за отговора.
да идеята е тази но, да се разкара PHP - то .
то в момента работи като backend .. трябва да го разкарам и мигрирам на електрон.
в main.js е ясно да - за ipcRenderer.
това което не намирам е какво да напиша в angularjs там където използвам ПОСТ/ГЕТ заявка в момента.
намирам само :

https://github.com/develephant/ngElectron

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

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

Posted: Mon Nov 25, 2019 8:44 pm
by Revelation
Ами не виждам или не разбирам цялостната идея на Angular тука. Ако целта е само да го използваш, колкото да изпратиш заявка и да получиш отговор, е безсмислено.

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

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


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

Posted: Tue Nov 26, 2019 12:41 pm
by vasilev
Ще трябва да мина на angular. Явно с angularjs няма как да стане..