나만의 무기 : HIGHLIGHTING/개발 일지

Day 33 (1) : electron IPC 구조 설계

정글러 2022. 3. 7. 12:21

다시 일렉트론으로 돌아와서

 

전날 이해한 Backgound, Electron main, App 삼자간의 IPC 정보교환 구조를 우리 서비스에 구현해보자

 

지금은 axios로 서버와 통신하는 부분이 그대로 남아있어,

브라우저는 electrondml window로 바뀌었지만 클라이언트가 하는 일은 똑같다

 

이걸 서버가 하는 일까지 클라이언트 선에서 끝내는 서버리스 데탑앱으로 만든다면

웹서비스였을 때 클라이언트가 서버에 요청을 보내던 부분은

전부 IPC로 구현할 필요가 있다.

 

그런데 여기서 서버리스 데탑앱일때 있을 의미가 그닥 없는 로그인 등의 기능은 빠지고

 

남는 요청들이 뭐가 있나 하니

 

처음 링크를 입력했을 때의 분석 요청

키워드 검색 요청

다운로드 요청

 

이 세개가 남는다

 

그래서 구현해야 할 것은 4개

 

App이 처음 렌더됐을때 실행되는, 백그라운드의 모든 리스너를 여는 send콜

분석, 검색, 다운로드에 대한 각각의 통신 세트가 총 3개

 

먼저, electron 진입점이 앱을 렌더했을 때 백그라운드를 깨우도록 Didmount에 ipc렌더문을 탑재한다

일련의 과정이 종료된뒤 콘솔로그로 확인한다고 on도 열어뒀는데 기능은 없다

 

이걸 수신한 electron은 App과 마찬가지로 백그라운드를 hide된 새 윈도우로 생성

이 히든윈도우의 URL로 로드된 백그라운드 스크립트는 각각의 스크립트 실행 요청을 수신할 리스너들을 열고 나서 백그라운드가 열렸음을 electron에 다시 알린다.

그럼 일렉트론이 다시 App에 알려서 App이 이제 백그라운드 스크립트를 실행할 수 있다는걸 알게됨

 

 

 

다음은 개별 스크립트들의 실행요청 전달 로직

먼저 App이 axios로 서버에 요청을 보내던 함수를, ipc렌더로 send하도록 바꿈

 

그럼 이걸 electron이 듣고 백에 전달

url은 계속 쓰이니 캐시에 저장

 

백은 해당하는 파이썬 스크립트를 실행하고 pythonshell로부터 결과를 받아 다시 electron에 전달

그럼 electron이 다시 App에 전달하는 것으로 앱은 실행결과를 쓸 수 있게 된다

 

홈화면의 분석요청버튼을 해당 로직으로 대체하니, 서버에 요청을 보내지 않는 것을 확인

 

나머지 두 스크립트를 실행하는 통신도 똑같이 구현

 

이제 이름만 따둔 각각의 스크립트를 서버에서처럼 잘 작동하는 진짜 파이썬코드로 대체하면

서버는 필요없게 된다.

 

백엔드 담당(프로덕트에 서버 없음)으로 전직 성공까지 하루 남은듯

 

딱 이거까지만 개발하고

프론트가 UI 배치랑 디자인 손보고 액션 추가한거 머지하고나면 프로덕트 완성

 

화요일은 세션 제작

수요일은 마무리발표때랑 바뀐 부분 발표자료에 반영하고 대본 다시 짜기

하면 진짜진짜 끝일듯...

 

나머진 자고 일어나서 하자.