ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Node.js] 이벤트처리 'EventEmitter' 사용방법
    node.js(노드) 2020. 8. 11. 16:00

    EventEmitter는 Node.JS에 내장되어 있는 일종의 옵서버 패턴 구현이다.

    HTML,자바스크립트의 이벤트 리스너에서해당 이벤트를 등록해놓고 버튼에 따라 특정 이벤트를 사용하는 것을 사용해 본 적이 있을 거다.

     

    이것도 비슷한 기능이다. 해당 변수에 여러 가지 이벤트를 등록해놓고 사용자가 원하는 이벤트를 골라 사용하는 방식이다.

     

    우선 코드를 보자.

     

    event.js

    const EventEmitter = require('events');
    
    this.eventPlay = null;
    
    this.eventPlay = new EventEmitter();  //연산자 생성
    
    this.eventPlay.on('connection',(data)=>{	//이벤트 등록
    	console.log("connection 시작");
        console.log("data : " + data);
    });

    일단 당연히 events 모듈을 설치해야 한다.

    그 후 해당 모듈을 사용하여 연산자를 만들고  해당 연산자에 "on"을 이용하여 이벤트를 등록한다.

     

     

    this.eventPlay.on('connection',(data)=>{}	//"connection" 이름의 이벤트 등록

    이 부분은 connection이라는 이름의 이벤트를 등록한 부분이다.

     

     

    추후에 부분을 사용하는 방법은 emit을 사용한다

    const events = require('./event'); 우선 모듈 등록
    
    events.eventPlay.emit('connection',"데이터");
    
    
    //log값 :
    //connection 시작
    //data : 데이터

    물론 하나뿐만 아니라 해당 연산자 + emit('이벤트 이름', arg1, arg2,...) 이면 여러 이벤트를 사용할 수 있다.

     

     

    const EventEmitter = require('events');
    
    this.eventPlay = null;
    
    this.eventPlay = new EventEmitter();  //연산자 생성
    
    this.eventPlay.on('connection1', (data) => {
        console.log("connection1 시작");
        console.log("data : " + data); 	  		//데이터
    });
    this.eventPlay.on('connection2', (data1, data2) => {
        console.log("connection2 시작");
        console.log("data : " + data1);			//데이터1
        console.log("data : " + data2);			//데이터2
    });
    this.eventPlay.on('connection3', (data1, data2, data3) => {
        console.log("connection3 시작");
        console.log("data : " + data1);			//데이터1
        console.log("data : " + data2);			//데이터2
        console.log("data : " + data3);			//데이터3
    });
    this.eventPlay.emit('connection1',"데이터");
    this.eventPlay.emit('connection2',"데이터1","데이터2");
    this.eventPlay.emit('connection3',"데이터1","데이터2","데이터3");

     

    그 외에도

     

     

    once(이벤트명, 콜백)  : 한번만 실행되는 이벤트

     

    removeAllListeners(이벤트명) : 이벤트에 연결된 모든 이벤트 리스너를 제거

     

    removeListener(이벤트명, 리스너) : 이벤트에 연결된 리스너를 하나씩 제거

     

    off(이벤트명, 콜백) : 노드 10 버전에서 추가된 메서드 removeListener와 기능이 같다.

     

    listenerCount(이벤트명) : 현재 리스너가 몇 개 연결되어 있는지 확인한다.

     

    * 디폴트 값으로 한 개당 이벤트는 최대 10개까지만 등록할 수 있다.

     

    참조 : https://edykim.com/ko/post/events-eventemitter-translation-in-node.js/

    댓글

Designed by Tistory.