Node.js에서 Event Emitters 이해하기: 사용 시기와 방법
발행: (2025년 12월 24일 오후 11:09 GMT+9)
3 min read
원문: Dev.to
Source: Dev.to
Node.js에서 이벤트 이터레이터(Event Emitters)란?
Node.js의 이벤트 이터레이터는 비동기·이벤트 기반 아키텍처의 핵심 요소입니다. 이름이 지정된 이벤트를 발생시키고, 등록된 콜백 함수로 해당 이벤트에 응답함으로써 애플리케이션의 서로 다른 부분 간에 통신할 수 있게 해줍니다.
이벤트 이터레이터는 어떻게 동작하나요?
- Node.js는
events모듈과EventEmitter클래스를 제공합니다. EventEmitter를 상속받은 객체는 이벤트 리스너를 등록하고 비동기적으로 이벤트를 발생시킬 수 있습니다.- 리스너 함수는 이벤트가 발생할 때마다 실행됩니다.
예시: 기본 사용법
const EventEmitter = require('events');
const emitter = new EventEmitter();
// Registering an event listener
emitter.on('greet', (name) => {
console.log(`Hello, ${name}!`);
});
// Emitting the event
emitter.emit('greet', 'Alice'); // Output: Hello, Alice!
일반적인 사용 사례: 커스텀 로깅 시스템
다양한 컴포넌트에서 공통으로 사용할 로깅 솔루션이 필요하다고 가정해봅시다.
- 로그가 필요할 때마다 이벤트를 발생시키는 로거를 만들고,
- 해당 로그 이벤트를 처리하거나 저장하는 리스너를 연결합니다.
예시
const EventEmitter = require('events');
class Logger extends EventEmitter {
log(message) {
this.emit('log', message);
}
}
const logger = new Logger();
// Listen for log events
logger.on('log', (msg) => {
console.log(`Log: ${msg}`);
});
logger.log('Server started'); // Output: Log: Server started
요약
- 이벤트 이터레이터를 사용하면 Node.js 애플리케이션의 서로 다른 부분 간에 느슨하게 결합된 통신을 구현할 수 있습니다.
- 커스텀 이벤트, 스트리밍 API, 모듈형 시스템 구축 등에 이상적입니다.
EventEmitter를 확장하거나 재사용하여 강력하고 모듈화된 Node.js 애플리케이션을 만들 수 있습니다.