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));
라우터란
네트워크와 네트워크 간의 경로를 설정하고 가장 빠른 길로 트래픽을 이끌어 주는장치