ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2. node에서 이벤트 처리하기
    IT&개발/node.js 2015. 8. 12. 08:13
    728x90
    반응형

    노드는 non-blocking 방식이기 때문에 언제 끝날지 모른다. 그렇기에 이벤트 처리는 필수적이다.


    이벤트를 처리하는 과정은 2가지로 나뉠 수 있다.


    1. 이벤트를 등록한다.

    2. 이벤트를 발생한다.


    그렇다면 이것이 가능하게 하려면 어떤 것들이 필요할까?


    이벤트를 등록하는 것은 아무 객체나 되는 것일까? 아니다. 이벤트를 처리하는 객체는 이벤트를 처리하는 객체의 능력을 상속받아야 한다. 그렇다면 그 모듈은 어느것일까? 


    이벤트를 처리하는 능력을 가진 모듈은 "events"내장 모듈이다. 거기서 events.EventEmitter 능력을 상속받으면 된다.


    그렇다면 상속은 어떻게 할것인가. 상속을 상속을 담당하는 모듈인 "util"을 이용해서 상속을 받으면 된다.


    이벤트를 등록하고 실행하는 간단한 코드이다. 


    코드를 하나하나 뜯어보면 

    1. 이벤트를 처리하는 객체를 생성하고 상속을 하는 객체를 생성한다.

    var events = require("events");

    var util = require("util");


    2. 상속받을 객체를 정의한다.

       function Car(){

     this.name = "sonata"//this가 있으니까 객체를 위한....

    3. 상속처리를 한다.


     util.inherits(Car,events.EventEmitter);

    4. 객체를 생성하고 이벤트를 등록한다.



    var car = new Car();

    car.on("CAR FORWARD",function(){

        console.log("CAR IS FORWARDING!!안농안농");

    });

    car.on("CAR STOP",function(){

        console.log("CAR IS STOP!!");

    });


    이벤트를 등록하는 것은 on메소드를 사용하여 이벤트 명과 이벤트 발생시 어떤 일을 할 것인가에 대하여 정의 해준다.



    5.이벤트를 실행한다. 이벤트의 실행은 emit()메소드를 이용하여 이벤트명을 쓰면된다.

     car.emit("CAR FORWARD");

    <결과창>




    <eventTest.js>

    //첫번째, 필요한 module require
    //event 처리를 하려면 events라는 module이 필요하다. - 내장 모듈이 필요
    //event를 처리하려면 event.EventEmitter 함수를 상속해야 한다. - 쉽지 않기에 쉽게 하기위하여 util이라는 내장 모듈을 이용한다.
    //결론적으로 모듈이 2개 필요하다.
    var events = require("events");//-------------------------event 객체를 생성한다.(상속을 해주기 위한 객체)
    util = require("util");//------------------------------util (객체를 생성 상속을 해주는 객체)


    //객체를 생성하기 위해서 함수를 작성 - 자바스크립트에서는 객체를 만들기 위해서는 함수가 필요하니까.
    function Car(){
    this.name = "sonata"//this가 있으니까 객체를 위한....
    }

    //상속처리
    util.inherits(Car,events.EventEmitter);//events.EventEmitter가 이벤트를 다룰수있는 능력을 상속받는다.


    //해당 객체는 이벤트를 등록하고 처리할 수 있는 객체생성
    var car = new Car();

    //이벤트 등록 - 이벤트를 등록할 때는 on이라는 함수를 사용

    //(이벤트명, function 정의) 정함
    car.on("CAR FORWARD",function(){
    console.log("CAR IS FORWARDING!!안농안농");
    });
    car.on("CAR STOP",function(){
    console.log("CAR IS STOP!!");
    });

    //이벤트를 발생 - emit()함수 사용
    car.emit("CAR FORWARD");//다른 컴퓨터와 통신을 이벤트로 할 것이다. 마지막 날에~/**


    반응형

    댓글

Designed by Tistory.