ipcRenderer.on(channel, listener)에서 channel은 IPC(Inter-Process Communication) 메시지를 식별하는 고유한 문자열 이름입니다.
IPC(Inter-Process Communication)의 역할
Electron 애플리케이션은 **렌더러 프로세스(Renderer Process)**와 **메인 프로세스(Main Process)**라는 두 가지 유형의 프로세스로 구성됩니다.
- 렌더러 프로세스: 웹페이지(HTML, CSS, JS)를 렌더링하며, 여러 개가 존재할 수 있습니다.
- 메인 프로세스: 애플리케이션의 생명주기를 관리하고, 네이티브 시스템 API(파일 시스템 접근, 창 관리 등)에 접근할 수 있습니다.
렌더러 프로세스와 메인 프로세스는 별도의 메모리 공간에서 실행되기 때문에 직접적으로 데이터를 공유할 수 없습니다. 이때, 이들 간에 데이터를 주고받기 위한 메커니즘이 바로 IPC입니다.
channel의 기능
channel은 이 IPC 통신에서 다음과 같은 중요한 역할을 수행합니다.
- 메시지 식별: 렌더러 프로세스와 메인 프로세스는 여러 종류의 메시지를 주고받을 수 있습니다. 예를 들어, '파일 열기' 요청, '데이터 저장' 요청, '알림 보내기' 요청 등 다양한 기능이 있을 수 있습니다.
channel은 이러한 각 메시지의 종류를 구분하는 일종의 이름표 역할을 합니다. - 이벤트 라우팅:
ipcRenderer.on(channel, listener)는 특정channel이름으로 도착하는 메시지를 수신 대기합니다. 즉, 메인 프로세스에서ipcMain.send('파일 열기', ...)와 같은 코드로 메시지를 보내면, 렌더러 프로세스의ipcRenderer.on('파일 열기', ...)에 등록된listener함수가 실행됩니다. 이처럼channel은 메시지를 올바른 수신자에게 라우팅하는 데 사용됩니다.
예시
- 메인 프로세스 (main.js):
ipcMain.on('파일 열기', (event, arg) => { // '파일 열기' 채널로 메시지를 받으면 실행되는 코드 console.log(arg); // '파일을 열어주세요!' 출력 // 파일 열기 로직 실행... event.sender.send('파일 열기 응답', '파일이 성공적으로 열렸습니다.'); });- 렌더러 프로세스 (renderer.js):
// '파일 열기 응답' 채널로 오는 메시지를 대기 ipcRenderer.on('파일 열기 응답', (event, message) => { console.log(message); // '파일이 성공적으로 열렸습니다.' 출력 }); // '파일 열기' 채널로 메시지 보내기 ipcRenderer.send('파일 열기', '파일을 열어주세요!');
위 예시에서 '파일 열기'와 '파일 열기 응답'이 바로 channel입니다. 이처럼 channel을 통해 어떤 메시지를 주고받는지 명확히 구분하고, 관련된 작업을 수행할 수 있습니다.
'프로그래머로의 여정' 카테고리의 다른 글
| 자바스크립트에서 Promise란 (2) | 2025.08.05 |
|---|---|
| 라우팅(Routing)과 리스너(Listener) (0) | 2025.08.05 |
| 렌더링(Rendering)이란? (3) | 2025.08.04 |
| GitHub에서 효과적인 이슈(Issues)를 작성하는 방법 (1) | 2025.06.14 |
| XSS(Cross-Site Scripting) 공격 (1) | 2025.06.14 |