<commit_before># ipcMain

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

프로세스: [메인](../tutorial/quick-start.md#main-process)

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

## 메시지 전송

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

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

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

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

ipcMain.on('synchronous-message', (event, arg) => {
  console.log(arg)  // "ping" 출력
  event.returnValue = 'pong'
})
```

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

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

## Methods
<commit_msg>I modified missed parameter in example.<commit_after># ipcMain

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

프로세스: [메인](../tutorial/quick-start.md#main-process)

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

## 메시지 전송

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

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

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

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

ipcMain.on('synchronous-message', (event, arg) => {
  console.log(arg)  // "ping" 출력
  event.returnValue = 'pong'
})
```

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

ipcRenderer.on('asynchronous-reply', (event, arg) => {
  console.log(arg) // "pong" 출력
})
ipcRenderer.send('asynchronous-message', 'ping')
```

## Methods

{'fraction_non_alphanumeric': 0.1601848286484405, 'fraction_numerical': 0.0, 'mean_word_length': 4.196, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 11, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4902542', 'n_tokens_mistral': 1572, 'n_tokens_neox': 1875, 'n_words': 276}