리그캣의 개발놀이터

노드js[Node.js] EventEmitter 사용하기 (이벤트) 본문

개발 공부/Node.js(웹)

노드js[Node.js] EventEmitter 사용하기 (이벤트)

리그캣 2018. 1. 17. 15:19


안녕하세요. 리그캣 입니다.


오늘은 이벤트에 대해서 알아보겠습니다. 이벤트란 무엇일까요?? ㅎㅎㅎ 


안드로이드 써보신 분들은 알겠지만 이벤트란 일종의 '신호'와 같은건데요 


노드 같은 경우에는 대부분 이벤트를 기반으로 하는 비동기 방식으로 처리를 하게됩니다. 그리고 비동기 방식으로 


처리하기 위해 서로 이벤트를 전달해요.


그리고 이런 노드가 이벤트를 보내고 받을 수 있도록 EventEmitter 라는 것이 만들어져 있습니다.


http://www.haruair.com/blog/3396


에서는 다음과 같이 정리하였다.


EventEmitter는 Node.JS에 내장되어 있는 일종의 옵저버 패턴 구현이다. NODE 뿐만 아니라 대부분의 프레임워크나 라이브러리에서 이 구현을 쓰거나 유사한 구현을 활용하고 있는 경우가 많다. DOM Event Listener를 사용해 본 경험이 있다면 사실 새로운 기능은 아니지만, 요즘 이 패턴으로 작성된 라이브러리가 많고 특히 node 코어 라이브러리도 이 구현을 사용한 경우가 많아 살펴볼 만한 내용이다.


이벤트 보내고 받기 - Doit node.js 프로그래밍


노드의 객체는 EventEmitter를 상속받을 수 있으며, 상속받은 후에는 EventEmitter 객체의 on()과 emit() 메소드를 사용할 수 있습니다.


on(event, listener) - 지정한 이벤트의 리스너를 추가합니다.

once(event, listener) - 지정한 이벤트의 리스너를 추가하지만 한 번 실행한 후에는 자동으로 리스너가 제거됩니다.

removeListener(event, listener) - 지정한 이벤트에 대한 리스너를 제거합니다.


예제 코드


process.on('exit', function(){
console.log('exit 이벤트 발생함.');
});

setTimeout(function(){
console.log('2초 후에 시스템 종료 시도함.');

process.exit();
},2000);


출력 화면


2초 후에 시스템 종료 시도함.
test10.js:6
exit 이벤트 발생함.


Process 객체는 노드에서 언제든지 사용할 수 있는 객체인데 이미 내부적으로 EventEmitter를 상속받도록 만들어져 있어 on()과 emit()메소드를 바로 사용할 수 있습니다.





Comments