nodeJS 9

빠르게 훝어 보는 node.js - monk 모듈을 이용한 mongoDB 연결

monk 모듈을 이용한 mongoDB 연결 조대협 (http://bcho.tistory.com) mongoDB 기반의 개발을 하기 위해서 mongoDB를 설치한다. https://www.mongodb.org/ 에서 OS에 맞는 설치 파일을 다운로드 받아서 설치한다.설치가 된 디렉토리에 들어가서 설치디렉토리 아래 ‘./data’ 라는 디렉토리를 만든다. 이 디렉토리는 mongoDB의 데이타가 저장될 디렉토리이다. mongoDB를 구동해보자. % ./bin/mongod --dbpath ./data Figure 1 mongoDB 구동화면 구동이 끝났으면 mongoDB에 접속할 클라이언트가 필요하다. DB에 접속해서 데이타를 보고 쿼리를 수행할 수 있는 클라이언트가 필요한데, 여러 도구가 있지만 많이 사용되는 ..

빠르게 훝어 보는 node.js - #12 Socket.IO 4/4 - 채팅방 기능 추가하기

빠르게 훝어보는 node.js#12 - Socket.IO (4/4)조대협 (http://bcho.tistory.com) 채팅 프로그램에 방(room/그룹)의 기능을 추가하기다음은 앞에서 만든 1:1 귓속말이 가능한 채팅에 “채팅방” 기능을 추가한 버전이다. var express = require('express'); var routes = require('./routes'); var http = require('http'); var path = require('path'); var app = express(); app.use(express.bodyParser()); app.use(express.cookieParser('your secret here')); app.use(express.session());..

빠르게 훝어 보는 node.js - #11 Socket.IO 3/4 (1:1 귓속말 구현)

빠르게 훝어보는 node.js#11 - Socket.IO (3/4)조대협 (http://bcho.tistory.com) 앞서 작성한 대화방 http://bcho.tistory.com/896 에 이어서 이번에는 1:1 귓속말 대화가 가능한 기능을 추가해보자 귓속말이 가능한 대화방이번에는 특정 사용자가 다른 사용자에게 귓속말을 보내는 기능을 가지는 대화방을 만들어보자. 이를 통해서 특정 클라이언트 소켓에 메세지를 어떻게 보내는지를 배울 수 있다.이 대화방의 기능은 다음과 같다.Ÿ 대화방에 입장하는 손님들은 자동으로 대화명을 부여 받는다.Ÿ 사용자는 대화명을 바꿀 수 있다.Ÿ 사용자는 대화 수신자의 대화명을 선택하여 특정 사용자에게 귓속말을 보낼 수 있다.코드를 보면서 설명하도록 하자.app.js var ex..

빠르게 훝어 보는 node.js - #9 Socket.IO 1/4 - socket.io 기본 및 채팅 만들기

빠르게 훝어보는 node.js#9 - Socket.IO (1/4)조대협 (http://bcho.tistory.com) 웹의 발전과 함께, 클라이언트의 요청에 대해서 응답만을 하는 단방향성이 아닌 양방향성의 웹 사이트가 유행하게 되었는데, Socket.IO는 자바스크립트 모듈로, 양방향 통신이 가능한 웹사이트를 구축하기 위해서 HTTP 클라이언트로 푸쉬 메시지를 보내줄 수 있는 모듈이다. 넓은 브라우져 지원성과 사용의 편의성 때문에 널리 사용되고 있고, node.js가 인기 있어 지는 이유 중의 하나는 socket.io 때문이 아닐까 한다.배경Socket.io를 설명하기 전에, 웹에서의 푸쉬 개념에 대해서 이해할 필요가 있다. 웹은 기반적으로 클라이언트에서 서버로 가는 단방향성이지만, 채팅과 같은 실시간 ..

빠르게 훝어 보는 node.js - #5 웹개발 프레임웍 Express 2/2

빠르게 훝어보는 node.js#5 - Express 2/2조대협 (http://bcho.tistory.comFile upload 및 download 처리Express는 파일 업로드 기능을 제공한다. Express 의 경우, 파일을 tmp directory에 업로드한후, 업로드가 끝나면 이벤트를 주는 형태이다. 그래서, 파일 업로드가 끝나면 파일 저장 디렉토리로 옮겨 줘야 한다. 그러면 간단하게 코드를 살펴보자. express에서 업로드되는 file stream은 multipart 형태로 업로드가 된다. 이 multi part request stream을 인식하려면, express세팅에 bodyParser 미들웨어를 사용함을 명시해줘야 한다.var app = express();app.use(express...

빠르게 훝어 보는 node.js - #4 웹개발 프레임웍 Express 1/2

빠르게 훝어보는 node.js#3 - Express 1/2조대협 (http://bcho.tistory.comExpressnode.js는 여러 종류의 웹 개발 프레임웍을 제공한다.얼마전에 Paypal이 내부 시스템을 대규모로 node.js로 전환하면서 오픈소스화한 KarkenJS나 Meteo 등 여러가지 프레임웍이 있는데, 그중에서 가장 많이 사용되는 프레임웍 중하나인 Express에 대해서 설명하고자 한다.Express는 웹 페이지 개발 및 REST API 개발에 최적화된 프레임웍으로 매우 사용하기가 쉽다.프로젝트 생성먼저 express module을 npm을 이용해서 설치한 다음 express 프로젝트를 생성해보자.% express --session --ejs --css stylus myapp명령을 이..

빠르게 훝어 보는 node.js - #3 Event,Module,NPM

빠르게 훝어보는 node.js#3 - Event,Module,NPM조대협 (http://bcho.tistory.com비동기 이벤트 프로그래밍기존의 프로그래밍 언어들은 일반적으로 함수를 부르는 형태의 프로그래밍 구조를 가지고 있다. 이를 procedural programming model이라고 하는데, 코드가 순차적으로 실행되면서 함수를 호출하는 식의 구조를 가지고 있기 때문에 코드를 보면 코드의 수행 순서를 예측할 수 있다. node.js는 event driven programming 이라는 개념을 가지고 있는데, 이 개념은 특정 이벤트가 발생되면 미리 이벤트에 맵핑된 함수가 실행되는 형태이다. 즉 해당 함수가 언제 호출 되는지를 예측할 수 가 없다.var callback = function(data){..

Node.JS와 Vert.x 비교

Node.js vs Vert.x 비교 간단하게 정리해본 Node.JS와 Vert.x의 장단점 비교,두 서버 모두 C10K 문제를 해결 하기 위한 Single Thread 기반의 고성능 비동기 서버이다.C10K 문제는 대용량 (10,000개이상의 동시 커넥션을)처리 하기 위한 문제로 전통적인 Tomcat등의 WAS에서는 이 문제를 해결할 수 없다 들어온 request는 무조건 큐잉이 되었다가 뒷단의 멀티 쓰레드에 의해서 작업이 처리되는데 이 멀티 쓰레드의 수 만큼만 동시 사용자를 처리할 수 있는 개념이다.반대로 이 두 서버들은 일단 Connection이 연결되면, 연결된 socket들을 물고 있다가, Single Thread의 Event Loop가 고속으로 돌면서, socket에 들어온 메세지들을 처리하고..

비동기 네트워크 서버 프레임웍 Vert.x 소개

비동기 네트워크 서버 프레임웍 Vert.x조대협 * 서문Vert.x는 NodeJS와 같은 비동기 소켓서버 프레임웍이다.Vert.x에 대한 이해를 돕기 위해서, Tomcat과 같은 WebApplication Server(이하 WAS)에 대해서 먼저 간단하게 짚고 넘어가자. Tomcat의 경우에는 HTTP request가 들어오면, request가 앞의 request Queue에 쌓이게 된다.쌓이게된 request들은 Thread Pool에 있는 Thread에게 하나씩 할당되어, request를 처리하고, 작업이 끝나면, request가 들어온 connection으로 response를 보낸후, 작업을 끝낸다. 작업이 끝난 Thread는 다시 Thread Pool로 들어간다.이런 구조에서, Tomcat이 순간..