-
[Node.js] 간단한 에코 서버, 클라이언트 구현하기programing/Language 2019. 1. 15. 17:47
안녕하세요, Einere입니다.
(ADblock을 꺼주시면 감사하겠습니다.)
Node.js의 http모듈을 사용하여 간단한 에코 서버와 클라이언트를 구현해보겠습니다.
Server 구현하기
const http = require('http'); const server = http.createServer(function(req, res){ req.pipe(res); }); server.listen(9876, '127.0.0.1');
request stream과 response stream을 pipe함수로 연결시킵니다.
그러면 request내용을 그대로 response로 내보내게 됩니다.
Client 구현하기
//서버 생성 시 불러온 HTTP 모듈을 불러와서 'http' 변수에 바인딩 한다. const http = require('http'); // options에 HTTP 요청에 사용할 옵션 값들을 세팅한다. const options = { hostname: '127.0.0.1', port: 9876, path: '/', method: 'POST' }; // request 함수를 호출한다. 앞서 선언한 options 값과 각 요청이 어떻게 동작할지를 명시한 콜백 함수를 지정한다. const req = http.request(options, function (res) { console.log('STATUS: ' + res.statusCode); console.log('HEADERS: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('BODY: ' + chunk); }); }); req.on('error', function (e) { console.log('Problem with request: ' + e.message); }); // write data to request body req.write('hello'); req.write('bye'); // 요청 본문(body)에 써질게 없다할지라도 반드시 'req.end()'를 호출하여 HTTP 요청이 끝났다는 것을 명시해야 한다. req.end();
클라이언트는 꽤 복잡합니다.
우선, hostname, port, path, method등을 정의한 옵션을 설정합니다.
http.request()를 통해 response를 어떻게 할 것인지 정의하고, request객체를 얻습니다.
에러가 나는 경우를 대비해서 error이벤트에 대한 handler도 등록해 줍니다.
그리고 req.write()를 이용해 보낼 데이터를 스트림에 써줍니다.
보낼 데이터가 없다면 req.end()를 호출하여 요청을 끝냅니다.
결과
'programing > Language' 카테고리의 다른 글
[Vue, Express] Vue와 Express로 간단한 웹 개발하기 1 (5) 2019.01.26 [Node.js] multer를 이용한 파일 업로드 (0) 2019.01.20 [Node.js] 객체 생성과 상속 (0) 2019.01.14 [Vue] excel파일을 읽어서 json형식으로 파싱하기 (4) 2019.01.05 [Vue] throwing error: RegeneratorRuntime not defined (0) 2019.01.05 댓글