nodejs

HttpServer

본이qq 2022. 9. 7. 09:39
// 서버 구축에 필요한 기능과 함수를 담고 있는 http모듈을 require 합니다
const http=require('http');

 

 

 

// createServer 함수 : Node.js 자바스크립트로 만든 http 서버가 실행되게 하는 함수입니다
// (req, res)=>{ } : 서버에 클라이언트가 요청이 있을때 실행할 명령들 또는 응답내용이 들어갑니다
// req를 이용하여 전달받은 요청을 res 를 이용하여 요청에 응답합니다.
const server1 = http.createServer( (req, res)=>{
    res.write('<h1>Hellow Server By Nose Js</h1>');
    res.write( '<h2>Wellcome to My Node Server!!</h2>' );
} );

 

 

 

// .listen( 8090, ()=>{} ) 에 있는 ()=>{} 는 서버가 시작되면 실행할 명령이 들어갑니다
// 8090 : 클라이어트가 요청할 포트번호
server1.listen( 8090, ()=>{  console.log('8090포트에서 서버가 대기중입니다.');  });
// http.createServer().listen();
 
 
 
 
-> http://localhost:8090/ 으로 접속하면 res에 담긴 내용을 확인가능
 
 

 

 

// 기타의 설정 에러의 내용
// create 서버 함수로 서버기능을 실행시킵니다. + 에러처리 구문도 추가합니다.
// createServer 함수로 만든 서버 객체를 server 변수에 저장하고 기타 설정은 server변수를 통해 별도로 실행합니다
const http = require('http');

const server = http.createServer( (req, res)=>{
    res.write('<h1>Hello Node Server!!</h1>');
    res.write('<h2>Here is My Second Server!!</h2>');
    res.write('<h3>Wellcome to My Node Server!!</h3>');
} );

server.listen(8090);
server.on('listening', ()=>{  console.log('8090번 포트에서 서버 대기 중입니다!');  });
server.on('error', (error) => {   console.error(error);  }    );

 

 

 

 

// 응답 내용의 마지막 전송 : res.end 실행후에는 더이상 응답내용이 전송될 수 없습니다.
const http = require('http');

http.createServer( (req,res)=>{
    res.write('<h1>Hello Server by Nodejs #1</h1>');
    res.end('<h1>Have a Nice day~!!</h1>');
    // 응답 내용의 마지막 전송 : res.end 실행후에는 더이상 응답내용이  전송될 수 없습니다.
}).listen(8081, () => {  // 포트번호와 함께 이벤트 리스너 설정
    console.log('8081번 포트에서 서버 대기 중입니다!');
});

 

 

// req , res : 알고 있는 request, response 의 의미를 갖는 변수입니다
// 매개 변수이고, 서버에 있는 실제 request , response 객체가 전달됩니다
// 매개 변수는 그 객체를 전달받아 사용하는 것으로 변수의 아름은 자유롭게 변경이 가능합니다. 다만 함수 내에서 변경된 이름을 일관되게 사용해주는게 중요합니다
 
 
const http = require('http');
const fs = require('fs').promises;
http.createServer(async (req,res)=>{
    try{
        //promise 실행후 resolve에  파일의 내용이 전달되고, 함수안에서 그것을 꺼내쓰는 형태
        // await가 필요하고, 현재 함수는 async 를 붙여줍니다
        const data = await fs.readFile('./04_Server04.html');

        // 헤더에 필요한 내용을 실어서 보내는 역할. 현재는 한글을 위한 속성이 담겨있습니다.
        // 따라서 한글 인코딩을 위한 헤더 내용을 먼저 보내줍니다
        res.writeHead( 200 , {'Content-Type':'text/html; charset=utf-8'}  );

        res.end(data);
    }catch(error){  
        // promise 실행후 resolve 에 전달된값은 data가 받고, reject에 전달된값은 error 가 받습니다.
        console.error(error);
        res.writeHead( 500 , {'Content-Type': 'text/plain; charset=utf-8'});
        res.end(error.message);
    }
}).listen(8081, ()=>{  console.log('8081번 포트에서 서버 대기 중입니다!');  });

-> fs(promise객체를 품고 있음)가 04_Server04.html 파일의 내용을 data에 저장하고, 

    함수 이름 앞에 async를 붙이고 fs.readFile 앞에 await를 붙여서 필요할 때 꺼내쓸 수 있도록 함.

->res.writeHead --> 헤더에 들어갈 내용을 실어서 보냄 

->promise 실행 후 resolve에 전달된 값은 data가 받고, reject에 전달된 값은 error가 받는다. 

 

// http 상태 코드
// 2XX : 서버 전송 정상 완료.
// 3XX: 리다이렉션(다른 페이지로 이동)을 알리는 상태
// 4XX: 요청 오류를 나타냅니다. 요청 자체에 오류가 있을 때 표시됩니다
// 5XX: 서버 오류 - 요청은 제대로 왔지만 서버에 오류가 생겼을 때 발생합니다
 
 

 

'nodejs' 카테고리의 다른 글

readAndWrite / promise  (0) 2022.09.06
Path  (0) 2022.09.06
Os  (0) 2022.09.06
Timer  (0) 2022.09.06
Console  (0) 2022.09.06