본문 바로가기
프로그래머로의 여정

ipcRenderer.on(channel, listener)에서 channel

by nunaaa 2025. 8. 5.

ipcRenderer.on(channel, listener)에서 channelIPC(Inter-Process Communication) 메시지를 식별하는 고유한 문자열 이름입니다.

IPC(Inter-Process Communication)의 역할

Electron 애플리케이션은 **렌더러 프로세스(Renderer Process)**와 **메인 프로세스(Main Process)**라는 두 가지 유형의 프로세스로 구성됩니다.

  • 렌더러 프로세스: 웹페이지(HTML, CSS, JS)를 렌더링하며, 여러 개가 존재할 수 있습니다.
  • 메인 프로세스: 애플리케이션의 생명주기를 관리하고, 네이티브 시스템 API(파일 시스템 접근, 창 관리 등)에 접근할 수 있습니다.

렌더러 프로세스와 메인 프로세스는 별도의 메모리 공간에서 실행되기 때문에 직접적으로 데이터를 공유할 수 없습니다. 이때, 이들 간에 데이터를 주고받기 위한 메커니즘이 바로 IPC입니다.

channel의 기능

channel은 이 IPC 통신에서 다음과 같은 중요한 역할을 수행합니다.

  1. 메시지 식별: 렌더러 프로세스와 메인 프로세스는 여러 종류의 메시지를 주고받을 수 있습니다. 예를 들어, '파일 열기' 요청, '데이터 저장' 요청, '알림 보내기' 요청 등 다양한 기능이 있을 수 있습니다. channel은 이러한 각 메시지의 종류를 구분하는 일종의 이름표 역할을 합니다.
  2. 이벤트 라우팅: 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을 통해 어떤 메시지를 주고받는지 명확히 구분하고, 관련된 작업을 수행할 수 있습니다.