Computer Science/컴퓨터네트워크(ComNet)

[컴네/CN] Nodejs

gxxgsta 2023. 12. 10. 12:00
반응형
SMALL

Nodejs

서버 소프트웨어를 개발하는 플랫폼으로 자바 스크립트 기반이다. 

내장 HTTP 서버 라이브러리 환경으로 웹 서버 개발 시 브라우저 바깥에서 서버를 개발할 수 있다.

 

v8로 빌드된 이벤트 기반 자바 스크립트 런타임을 가지고 있으며, v8은 c++ 기반이므로 JS를 돌리는 환경이 c++이기 때문에 런타임이 짧다.

 

I/O 처리 성능이 우수한데, non-blocking, single thread, 비동기적으로 프로그래밍 하여 콜백이나 디버깅이 어렵다는 특징이 있다.

 

<HelloWorld>

var http = require('http');

http.createServer(function (request, response) {
	response.writeHead(200, {'Content-Type': 'text/plain'}); 
    response.end('Hello World\n');
}).listen(8000);

console.log('Server running at http://localhost:8000/');

 

위 코드는 http 모듈을 통해 서버를 생성한 코드이다.

요청이 들어오면 200 OK를 전송한다.

 

<TCP Echo Server>

var net = require('net');
net.createServer(function (stream) { 
	stream.write('hello\r\n');
    
	stream.on('end', function () {
 	       stream.end('goodbye\r\n'); 
    	});
	stream.pipe(stream); 
}).listen(7000);

 

모듈화

index.js -> server.js (server) -> router.js -> requestHandlers.js

 

위와 같이 파일을 배치하여 웹 서버가 앞에 있고

DB나 인증이 뒤에 있는 서버 모양을 만들 수 있다.

따라서 우리가 만드는 웹 서비를 JS로 모듈화하여 만들 수 있다.

 

index.js

웹 서버 초기 접속 페이지, 모듈 호출 및 서버 시작

- server.start(router.route, requestHanlders.handle)
- router 및 requestHalders 파라미터 호출

 

server.js

HTTP 요청 처리

- start(route, handle)
  - onRequest(request, response)
     - route(handle, url_pathname, response)
- http.createServer(onRequest).listen(8888)

 

router.js

앞 url이 동일할 때, 뒤의 경로에 따라 다르게 처리
- route(handle, url_pathname, response)
- handle[url_pathname](response)

 

requestHandlers.js

실제 메세지 처리

- view(response)
- create(response)

 

 

Chatting Web

웹 소켓인 socket.io를 이용한다.

일반 소켓은 운영체제에서 제공하지만, socket.io는 http 위에서 웹에 실시간성 요청을 해주는 소켓이다.

 

 

<index.js>

 

<index.html>

반응형
LIST

'Computer Science > 컴퓨터네트워크(ComNet)' 카테고리의 다른 글

[컴네/CN] WLAN, Cellular  (0) 2023.12.10
[컴네/CN] WebRTC  (0) 2023.12.10
[컴네/CN] Multimedia  (0) 2023.12.10
[컴네/CN] 암호통신: 방화벽  (0) 2023.12.09
[컴네/CN] 암호통신: IPSec  (0) 2023.12.09