본문 바로가기
카테고리 없음

Node.js 객체

by 맑은청이 2020. 4. 23.
728x90
반응형

 server 객체 : http 모듈에서 가장 중요한 객체, createServer() 메서드를 사용하여 생성

메서드 : listen(port[, callback])) 서버를 실행 / close([callback]) 서버를 종료

 

Port란? 

포트는 컴퓨터와 컴퓨터를 연결하는 정보의 출입구 역할 하는 곳. 컴퓨터에는 0번 부터 65535번까지 포트가 있다. 

 

사실 server 객체는 이벤트가 더 중요하다. server 객체는 EventEmitter 객체를 기반으로 만들어졌기 때문에 이벤트를 연결할 수 있다. 

 

이벤트 이름 설명
request  클라이언트가 요청할때
connection 클라이언트가 접속할때
close 서버가 종료될때
checkContinue 클라이언트가 지속적인 연결을 하고 있을 때
upgrade 클라이언트가 HTTP 업그레이드 요청할 때 
clientError 클라이언트에서 오류가 발생할 때 

*on() 메서드를 사용해 객체에 이벤트를 연결

//모듈을 추출
var http = require('http');
//server 객체 생성
var server = http.createServer();

//server 객체에 이벤트를 연결
server.on('request',function(code){
	console.log('Request On');
});

server.on('connection',function(code){
        console.log('Connection On');
});

server.on('close',function(code){
        console.log('close On');
});

server.listen(52273);

 실행 후 웹 브라우저를 이용해 'http://127.0.0.1:52273'에 접속하면 이벤트들이 실행된다. 

여기서는 웹페이지를 요청했지만 응답할 웹페이지가 없으므로 아무것도 출력되지 않습니다. 

 

var http = require('http');


http.createServer(function (request,response){
	response.writeHead(200,{'Content-Type' : 'text/html'});
	response.end('<h1>Hello World!</h1>'); //html로 화면에 출력된다.
}).listen(52273, function (){
	console.log('Server running at http://127.0.0.1:52273/');
});

 

 

 

 


-response 객체

위 server event 코드에서 접속 했으나 웹 브라우저에서는 아무 일도 일어나지 않는다. 요청을 전달 했으나 웹 서버가 응답 메시지를 전달하지 않았으므로 웹 브라우저가 응답을 기다리는 상태가 됐다. 

requset 이벤트 리스너의 두번째 매개변수에 전달되는 response 객체 사용

 

메서드 : writeHead(statusCode[,statusMessage][,headers]) 응답 헤더 작성/ end([data][,encoding][,callback]) 응답 본문 작성 

 

-File System 모듈을 사용한 HTML 페이지 제공

자바스크립트 파일 위에서 모든 HTML 페이지를 문자열로 작성하는 것은 불가능하다. 

request 이벤트가 발생할때 readFile() 메서드를 사용해 클라이언트에서 html 페이지를 제공하게 만들어야 한다. 

 

//모듈을 추출
var fs = require('fs');
var http = require('http');

//서버를 생성하고 실행
http.createServer(function(request,response){
	//HTML 파일을 읽는다.
    fs.readFile('HTMLPage.html',function(error,data){
		response.writeHead(200,{'Content-Type':'text/html'});
		response.end(data);
	});
}).listen(52272,function(){
	console.log('Server Running at http://127.0.1:52273');
});

*응답 헤더의 Content-Type' 속성을 바꾸면 사진이나 음성들을 올릴 수 있다. MIME 형식으로 입력한다.  

728x90
반응형