Inter-process communication의 약자로 데스크탑 앱에서 많은 기능을 담당하는 부분이다.
예를 들어서 UI를 통해서 native api를 호출할 수 있다.
- ipcMain과 ipcRenderer 모듈을 사용해서 channels를 통해 메세지를 주고 받을 수 있다.
- 채널은 추상화되어 있고, 양방향이다.
단방향 예시
renderer ⇒ main
- preload에 이벤트 및 콜백 설정,
ipcRenderer.send
로 이벤트 및 인자 전달 - main에서
ipcMain.on
으로 이벤트 받았을 때, 동작 - renderer에서 preload에 정의된 함수 실행으로 이벤트 트리거 및 인자 전달
main ⇒ renderer
- preload에서
ipcRenderer.on
으로 이벤트 및 콜백을 인자로 받는 함수 선언 - preload에서
ipcRenderer.send
로 이벤트 및 인자를 받는 함수 선언 - Main에서 BrowswerWindow 인스턴스를 사용해서
mainWindow.webContents.send('이벤트명', 인자)
로 preload에 이벤트 전달 - renderer에서는 이벤트와 함께 Main에서 발생시킨 이벤트에 동작할 콜백을 전달
renderer ⇒ renderer
- MessagePorts 사용
양방향 예시
invoke 사용 (권장)
- preload에 이벤트 및 콜백 설정,
ipcRenderer.invoke
로 이벤트 및 인자 전달 - main에서
ipcMain.handle
로 이벤트 받았을 때, 동작 - render에서 preload에 정의된 함수 실행으로 이벤트 트리거 및 인자 전달
- main handler에서 리턴한 값이 renderer에서 실행한 함수 리턴값으로 전달됨
event reply 사용