var events = require('events');

// EventEmitter 객체 생성
var eventEmitter = new events.EventEmitter();

//EventHandler 함수 생성. connected는 원래 있는 함수인지 확인해보자
var connectHandler = function connected(){
  console.log('connection successful');
  //data_received 이벤트 발생시키기
  eventEmitter.emit("data_received");
}
//connection 이벤트와 connectHandler 이벤트 핸들러 연동
eventEmitter.on('connection', connectHandler);

//data_received이벤트와 익명함수 연동
//함수를 변수 안에 담는 대신에, .on()메소드의 인자로 직접 함수전달.
eventEmitter.on('data_received', function(){
  console.log("Data Received");
})

eventEmitter.emit("connection");
console.log("Program has ended");

이벤트

var fs = require("fs");

var data = fs.readFile("input.txt", function(err,data){
  if (err) {
    return console.error(err);
  }
  console.log(data.toString());
});
// 이코드가 console.log()보다 오래걸리기 때문에 나중에 뜸.
// 비동기라는건 동시에 여러가지를 하는것...?

console.log("Program has ended");

어쩌다보니 동기를 당연하게 생각한다. 비동기를 기본으로 생각하자!

클라이언트와 서버

//서버

var http = require("http");
var fs = require("fs");
var url = require("url");

http.createServer(function(req,res){
  var pathname = url.parse(req.url).pathname;

  console.log("Request for " + pathname + " received.");

  if (pathname=="/") {
    pathname = "/index.html"
  }

  fs.readFile(pathname.substr(1), function(err, data){
    if (err) {
      console.log(err);
      res.writeHead(404, {'Content-Type': 'text/html'});
    }else{
      res.writeHead(200, {'Content-Type': 'text/html'});

      res.write(data.toString());
    }
    res.end
  });
}).listen(3000);

console.log('Server running at http://127.0.0.1:3000/');
//클라이언트

var http = require('http');

// HTTPRequest의 옵션 설정
var options = {
   host: 'localhost',
   port: '3000',
   path: '/index.html'
};

// 콜백 함수로 Response를 받아온다
var callback = function(response){
   // response 이벤트가 감지되면 데이터를 body에 받아온다
   var body = '';
   response.on('data', function(data) {
      body += data;
   });

   // end 이벤트가 감지되면 데이터 수신을 종료하고 내용을 출력한다
   response.on('end', function() {
      // 데이저 수신 완료
      console.log(body);
   });
}
// 서버에 HTTP Request 를 날린다.
var req = http.request(options, callback);
req.end();

3.26일 생활코딩 nodejs, poiemaweb, 공부

function , object, module의 조화는 정말 최고.

// 1. 무명의 리터럴로 표현이 가능하다.
// 2. 변수나 데이터 구조안에 담을 수 있다.

var increase = function(num) {
  return num + 1;
};

var decrease = function(num){
  return num - 1;
};

var obj = {
  increase: increase,
  decrease: decrease
};

// 2. 함수의 파라미터로 전달 할 수 있다.
function cal(func, num){
  return func(num);
}

console.log(cal(increase, 1));
console.log(cal(decrease, 1));

// 3. 반환값(return value)으로 사용할 수 있다.
function cal(mode){
  var funcs = {
    'plus' : function(left, right){return left + right},
    'minus' : function(left, right){return left - right}
  }
  return funcs[mode];
}
console.log(cal('plus')(2,1));
console.log(cal('minus')(2,1));

라우터란

네트워크와 네트워크 간의 경로를 설정하고 가장 빠른 길로 트래픽을 이끌어 주는장치

results matching ""

    No results matching ""