웹 브라우저가 server에 요청을하면, 그때마다 서버에서 발생하는 이벤트를 정의해야합니다.

그럴때는 callback 함수를 등록하면 됩니다.


표는 서버객체에서 사용할 수 있는 이벤트들입니다.



node.js server 객체에서 사용할 수 있는 event 입니다.

 이벤트이름         

 설명

 connection

  클라이언트가 접속하여 연결이 만들어질 때 발생하는 이벤트입니다.

 request       

 클라이언트가 요청할 떄 발생하는 이벤트입니다.

 close         

  서버를 종료할때 발생하는 이벤트입니다.






var http = require('http');

//웹서버 객체 생성
var server = http.createServer();

//웹서버 시작하여 3000번 포트에서 대기 설정
var port = 3000;
server.listen(port, function(){
console.log('웹서버가 시작되었습니다.:% d', port);
});

//클라이언트 연결 이벤트 처리

server.on('connection', function(socket){
var addr = socket.address();
console.log('클라이언트가 접속했습니다.: %s, %d', addr.address, addr.port);
});
//클라이언트 요청 이벤트 처리
server.on('request', function(req, res){
console.log("클라이언트 요청이 들어왔습니다.");
console.dir(req);
res.writeHead(200, {"content-type":"text/html; charset=utf-8"});
res.write("<!DOCTYPE html>");
res.write("<html>");
res.write(" <head>");
res.write(" <title>응답페이지</title>");
res.write(" </head>");
res.write(" <body>");
res.write(" <h1>노드제이에스로부터 응답 페이지!</h1>");
res.write(" </body>");
res.end();
});
//서버종료 이벤트 처리
server.on('close', function(){
console.log('서버가 종료됩니다.');
});



서버 실행화면




웹브라우저와 클라이언트가 웹서버에 연결되면 connection 이벤트 발생! => server.on 에 등록한 콜백메소드가 호출되는것 확인가능합니다.



클라이언트가 특정path로 요청하면 request 이벤트가 발생합니다.

'request'라는 이름으로 콜백메소드를 등록했기에

"클라이언트 요청이들어왔습니다." 문구 확인가능합니다.



웹브라우져를 켜고, 127.0.0.1:3000 으로 접속합니다. 그러면 아래와같은 서버에서 응답, 그리고 웹브라우져에서 응답을 보실수있습니다.

서버(콘솔창) 응답.


웹페이지 응답.




또한, res객체에 writeHead(), write(), end() 메소드를 사용하면

클라이언트로 응답을 보낼 수 있음. end() 메소드는 응답을 보냈다는것을 의미합니다.




응답(response) 객체의 주요 메서드


  메소드 이름  

  설명

   writeHead(statusCode             

     [, statusMessage][,headers])


  응답으로 보낼 헤더를 만듭니다.

  write(chunk[, encoding][, callback]) 

 응답본문(body)데이터를 만듭니다. 여러번 호출될 수 있습니다.

 end([data][,encoding][,callback])

 클라이언트로 응답을 전송합니다. 파라미터에 데이터가 들어있다면 이 데이터를 포함시켜 응답을 전송합니다.

 클라이언트의 요청이 있을 때 한번은 호출되어야 응답을 보내며, 콜백함수가 지정되면 응답이 전송된후 

 콜백함수가 호출됩니다.



<<참고 

Content-Type에 설정할 수 있는 대표적인 MIME Type


 Content Type의 값

 설명

 text/plain

 일반 텍스트문서

 text/html 

 HTML문서

 text/css

 CSS문서

 text/xml

 XML 문서

 image/jpeg, image/png

 JPEG파일, PNG 파일

 video/mpeg, audio/mp3

 MPEG 비디오파일, MP3음악파일

 application/zip

 zip 압축파일








+ Recent posts