2017. 11. 27. 13:49ㆍJavaScript/NodeJS
HTTP Server를 만들기 위하여 먼서 http 모듈을 로딩한다.
const http = require("http");
Server 기본 형태는 다음과 같다.
http.createServer( (request, response) => {
console.log( "Server Request....!!" );
}).listen(8080, () => {
console.log( "Server Start. localhost:8080" );
});
작성후 nodejs를 실행하고 브라우저에서 http://localhost:8080을 호출하면
console 창에
Server Start. localhost:8080
Server Request....!!
이와 같이 출력되는 것을 확인 할 수 있을 것이다.
하지만 브라우저에는 아무것도 찍히지 않을 것이다.
http 모듈의 createServer(callback)를 이용하여 Server를 생성하고 insten(port[, callback]) 를 통해 포트를 지정한다.
createServer 함수의 callback에는 request와 response를 가지고 있다.
request는 요청을, response는 응답을 담당한다.
request와 response는 별도의 설명은 하지 않겠다.
그럼 Server가 정상적으로 요청을 받고 응답하여 주도록 수정해 보도록 하겠다.
http.createServer( (request, response) => {
request
.on( "error", (err) => {
console.error(err);
})
.on( "data", (data) => {
console.log( data );
})
.on( "end", () => {
response
.on( "error", (err) => {
console.error(err);
});
response.statusCode = 200;
response.setHeader( "Content-Type", "text/plain" );
response.write( "Hello world!!" );
response.end( "Complate!!" );
});
}).listen(8080);
request나 response는 둘다 Event emitter를 사용한다.
request는
에러에 대한 이벤트를 발생하는 error,
Data를 처리하는 data,
Data 처리가 완료되었다는 end
로 구분을 한다.
request의 요청이 끝나면 당연히 response 처리를 해야 한다.
response는 Error에 대한 이벤트를 발생하는 error Emitter를 사용한다.
이후에 성공적으로 전송했다고 하는 state code 200을 설정하고
response의 header를 설정하여 준다.
이 소스에서는 단순 text이기 때문에 text/plain으로 처리하였다.
그리고 마지막으로 response.write( data ) 와 response.end( [data] )를 통해 응답에 대한 정보를 보내준다.
write와 end는 동일한 역할을 하지만 최종적으로는 반드시 end를 사용하여 response가 종료되었다고 알려줘야한다.
이후 다시 브라우저를 통하여 확인하면
Hello world!!
Complate!!
라고 결과가 출력되는 될것이다.
'JavaScript > NodeJS' 카테고리의 다른 글
[NodeJS] Express.js 시작 (0) | 2017.12.05 |
---|---|
[NodeJS] 서버 만들기(HTTP Server) - 2 (0) | 2017.11.28 |
[NodeJS] File System (0) | 2017.11.16 |
[NodeJS] Path (0) | 2017.11.13 |
[NodeJS] Event 활용 - 연결 및 제거 (0) | 2017.11.10 |