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>
'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 |