Angularjs send/recieve messages electron

Post Reply
User avatar
vasilev
Потребител
Потребител
Posts: 632
Joined: Sat Feb 07, 2009 12:41 pm
Answers: 25
Location: Everywhere
Contact:

Angularjs send/recieve messages electron

Post by vasilev » Sat Nov 23, 2019 8:59 am

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



Мерси !

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 861
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 62

Post by Revelation » Sat Nov 23, 2019 11:06 am

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

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

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

User avatar
vasilev
Потребител
Потребител
Posts: 632
Joined: Sat Feb 07, 2009 12:41 pm
Answers: 25
Location: Everywhere
Contact:

Post by vasilev » Sun Nov 24, 2019 6:54 pm

Здравей,
Може и да говорим за същото, не съм сигурен :)
Трябва да мигрираме 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]

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 861
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 62

Post by Revelation » Mon Nov 25, 2019 12:48 am

За себе си просто искам да структурирам нещата малко.

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

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]

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

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

User avatar
vasilev
Потребител
Потребител
Posts: 632
Joined: Sat Feb 07, 2009 12:41 pm
Answers: 25
Location: Everywhere
Contact:

Post by vasilev » Mon Nov 25, 2019 9:31 am

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

https://github.com/develephant/ngElectron

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

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

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 861
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 62

Post by Revelation » Mon Nov 25, 2019 8:44 pm

Ами не виждам или не разбирам цялостната идея на Angular тука. Ако целта е само да го използваш, колкото да изпратиш заявка и да получиш отговор, е безсмислено.

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

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


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

User avatar
vasilev
Потребител
Потребител
Posts: 632
Joined: Sat Feb 07, 2009 12:41 pm
Answers: 25
Location: Everywhere
Contact:

Post by vasilev » Tue Nov 26, 2019 12:41 pm

Ще трябва да мина на angular. Явно с angularjs няма как да стане..

Post Reply