electron/docs-translations/ko-KR/api/ipc-main.md
Plusb Preco 6fda14ce88 📝 Update Korean docs as upstream
[ci skip]
2016-05-01 01:53:21 +09:00

3.6 KiB

ipcMain

메인 프로세스에서 렌더러 프로세스로 비동기 통신을 합니다.

ipcMain 모듈은 EventEmitter 클래스의 인스턴스입니다. 메인 프로세스에서 사용하면, 렌더러 프로세스(웹 페이지)에서 전달된 동기, 비동기 메시지를 주고 받는 방법을 제공합니다. 렌더러 프로세스에서 메시지를 전달하면 이 모듈을 통해 메시지를 받을 수 있습니다.

메시지 전송

물론 메시지를 받는 것 말고도 메인 프로세스에서 렌더러 프로세스로 보내는 것도 가능합니다. 자세한 내용은 webContents.send를 참고하세요.

  • 메시지를 전송할 때 이벤트 이름은 channel이 됩니다.
  • 메시지에 동기로 응답할 땐 반드시 event.returnValue를 설정해야 합니다.
  • 메시지를 비동기로 응답할 땐 event.sender.send(...) 메서드를 사용할 수 있습니다.

다음 예시는 렌더러 프로세스와 메인 프로세스간에 메시지를 전달하고 받는 예시입니다:

// 메인 프로세스
const ipcMain = require('electron').ipcMain;
ipcMain.on('asynchronous-message', function(event, arg) {
  console.log(arg);  // "ping" 출력
  event.sender.send('asynchronous-reply', 'pong');
});

ipcMain.on('synchronous-message', function(event, arg) {
  console.log(arg);  // "ping" 출력
  event.returnValue = 'pong';
});
// 렌더러 프로세스 (웹 페이지)
const ipcRenderer = require('electron').ipcRenderer;
console.log(ipc.sendSync('synchronous-message', 'ping')); // "pong" 출력

ipcRenderer.on('asynchronous-reply', function(arg) {
  console.log(arg); // "pong" 출력
});
ipcRenderer.send('asynchronous-message', 'ping');

메시지 리스닝

ipcMain은 다음과 같은 이벤트 리스닝 메서드를 가지고 있습니다:

ipcMain.on(channel, listener)

  • channel String
  • listener Function

channel에 대해 이벤트를 리스닝합니다. 새로운 메시지가 도착하면 listenerlistener(event, args...) 형식으로 호출됩니다.

ipcMain.once(channel, listener)

  • channel String
  • listener Function

이벤트에 대해 한 번만 작동하는 listener 함수를 등록합니다. 이 listener는 등록된 후 channel에 보내지는 메시지에 한해 호출됩니다. 호출된 이후엔 리스너가 삭제됩니다.

ipcMain.removeListener(channel, listener)

  • channel String
  • listener Function

메시지 수신을 완료한 후, 더 이상의 콜백이 필요하지 않을 때 또는 몇 가지 이유로 채널의 메시지 전송을 멈출수 없을 때, 이 함수를 통해 지정한 채널에 대한 콜백을 삭제할 수 있습니다.

지정한 channel에 대한 리스너를 저장하는 배열에서 지정한 listener를 삭제합니다.

ipcMain.removeAllListeners(channel)

  • channel String (optional)

이 ipc 채널에 등록된 모든 핸들러들을 삭제하거나 지정한 channel을 삭제합니다.

Event 객체

callback에서 전달된 event 객체는 다음과 같은 메서드와 속성을 가지고 있습니다:

event.returnValue

이 메시지를 지정하면 동기 메시지를 전달합니다.

event.sender

메시지를 보낸 webContents 객체를 반환합니다. event.sender.send 메서드를 통해 비동기로 메시지를 전달할 수 있습니다. 자세한 내용은 webContents.send를 참고하세요.