머리말 ... 4 서문 ... 6 CHAPTER 01 Node.js 개요 1.1 Node.js 배경사 ... 23 1.2 이벤트 기반의 비동기 방식의 의미 ... 25 1.3 Node.js 장점과 단점 ... 27 1.4 Node.js를 사용한 애플리케이션 ... 28 CHAPTER 02 Node.js 개발 환경 구축 2.1 윈도 설치 ... 32 2.2 우분투 설치 ... 34 2.3 맥 설치 ... 36 2.4 첫 번째 Node.js 애플리케이션 ... 37 2.5 두 번째 Node.js 애플리케이션 ... 38 CHAPTER 03 Node.js의 전역 객체 3.1 전역 변수 ... 41 3.2 console 객체 ... 43 3.3 process 객체 ... 47 3.4 exports 객체와 모듈 ... 49 CHAPTER 04 기본 내장 모듈 4.1 os 모듈 ... 54 4.2 url 모듈 ... 56 4.3 Query String 모듈 ... 58 4.4 util 모듈 ... 59 4.5 File System 모듈 ... 61 파일 읽기 ... 62 파일 쓰기 ... 63 예외 처리 ... 64 CHAPTER 05 이벤트 5.1 이벤트 연결 ... 67 5.2 이벤트 연결 개수 제한 ... 71 5.3 이벤트 제거 ... 72 5.3 이벤트 강제 발생 ... 75 5.3 이벤트 생성 ... 77 CHAPTER 06 http 모듈 6.1 요청과 응답 ... 81 6.2 server 객체 ... 86 6.3 response 객체 ... 89 File system 모듈을 사용한 HTML 페이지 제공 ... 90 이미지와 음악 파일 제공 ... 92 쿠키 생성 ... 95 페이지 강제 이동 ... 98 6.4 request 객체 ... 101 url 속성을 사용한 페이지 구분 ... 101 method 속성을 사용한 페이지 구분 ... 104 GET 요청 매개 변수 추출 ... 105 POST 요청 매개 변수 추출 ... 106 쿠키 추출 ... 109 CHAPTER 07 외부 웹 모듈 7.1 EJS 모듈 ... 114 EJS 모듈의 메서드 ... 115 EJS 파일 형식 ... 117 데이터 전달 ... 119 7.2 Jade 모듈 ... 121 Jade 모듈의 메서드 ... 122 HAML 파일 형식 ... 124 Jade 파일 형식 ... 128 7.3 connect 모듈 기본 ... 130 7.4 connect 모듈 미들웨어 기본 ... 134 Query 미들웨어 ... 135 Logger 미들웨어 ... 136 Error Handler 미들웨어 ... 139 Static 미들웨어 ... 142 7.5 connect 모듈 - Router 미들웨어 ... 144 7.6 connect 모듈 - Cookie Parser 미들웨어 ... 148 7.7 connect 모듈 - Body Parser 미들웨어 ... 149 7.8 connect 모듈 - Session 미들웨어 ... 154 CHAPTER 08 MySQL 데이터베이스 8.1 MySQL 설치 ... 159 윈도 설치 ... 160 우분투 설치 ... 161 맥 설치 ... 161 8.2 MySQL 기본 ... 162 데이터베이스 생성 ... 163 테이블 생성 ... 163 데이터 저장 ... 165 데이터 조회 ... 166 조건 검사 ... 167 데이터 정렬 ... 170 특정 위치에 있는 데이터 선택 ... 171 데이터 수정 ... 173 데이터 삭제 ... 174 8.3 MySQL 모듈 기본 ... 175 8.4 MySQL 모듈을 사용한 CRUD 구현 ... 180 데이터 표시 ... 182 데이터 삭제 ... 184 데이터 추가 ... 185 데이터 수정 ... 188 최종 코드 ... 190 CHAPTER 09 Express 프레임워크 9.1 Express 프레임워크 설치 ... 196 9.2 프로젝트 설정 ... 198 9.3 Express 프레임워크 기본 ... 199 서버 생성 ... 201 미들웨어 설정 ... 201 실행 환경 설정 ... 203 페이지 라우트 ... 205 서버 실행 ... 205 9.4 페이지 라우트 ... 206 페이지 라우트 기본 ... 206 모듈을 사용한 페이지 라우트 ... 207 단일 페이지 렌더링 ... 208 폴더를 사용한 페이지 분류 ... 210 9.5 레이아웃 페이지 ... 212 9.6 response 객체 ... 214 페이지 강제 이동 ... 215 쿠키 생성 ... 216 9.7 request 객체 ... 219 요청 헤더의 속성 추출 ... 219 요청 매개 변수 추출 ... 220 CHAPTER 10 socket.io 모듈 10.1 socket.io 모듈 기본 ... 224 웹 소켓 서버 ... 225 웹 소켓 클라이언트 ... 226 웹 소켓 이벤트 ... 228 10.2 소켓 통신의 종류 ... 232 Public 통신 ... 233 Broadcast 통신 ... 234 Private 통신 ... 235 10.3 클라이언트 정보 저장 ... 237 10.4 방 생성 ... 242 10.5 웹 채팅 프로그램 ... 246 웹 채팅 서버 ... 247 웹 채팅 클라이언트 ... 249 웹 채팅 모바일 클라이언트 ... 253 남은 과제 ... 255 CHAPTER 11 영화 예매 11.1 프로젝트 개요 ... 257 11.2 프로젝트 생성 ... 258 11.3 서버 전체 코드 ... 259 11.4 서버 구현 ... 260 11.5 클라이언트 페이지 전체 코드 ... 263 11.6 클라이언트 페이지 구현 ... 265 11.7 정리 및 남은 과제 ... 270 CHAPTER 12 실시간 물건 구매 12.1 프로젝트 개요 ... 271 12.2 프로젝트 생성 ... 272 12.3 서버 전체 코드 ... 273 12.4 서버 구현 ... 276 12.5 클라이언트 페이지 전체 코드 ... 281 12.6 클라이언트 페이지 구현 ... 283 12.7 정리 및 남은 과제 ... 288 CHAPTER 13 실시간 위치 추적 13.1 프로젝트 개요 ... 289 13.2 프로젝트 생성 ... 291 13.3 데이터베이스 구성 ... 291 13.4 서버 전체 코드 ... 292 13.4 서버 구현 ... 294 13.5 클라이언트 페이지 전체 코드 ... 297 13.5 Tracker 페이지 구현 ... 301 13.6 Observer 페이지 구현 ... 305 13.7 정리 및 남은 과제 ... 309 CHAPTER 14 실시간 온라인 그림판 14.1 프로젝트 개요 ... 311 14.2 프로젝트 생성 ... 313 14.3 서버 전체 코드 ... 315 14.4 서버 구현 ... 317 14.5 클라이언트 페이지 전체 코드 ... 320 14.6 로비 페이지 구현 ... 324 14.7 캔버스 페이지 구현 ... 328 14.8 정리 및 남은 과제 ... 334 부록 A. http 모듈과 net 모듈 A.1 http 모듈을 사용한 웹 페이지 다운로드 ... 335 A.2 net 모듈을 사용한 TCP 서버 ... 338 A.3 net 모듈을 사용한 TCP 클라이언트 ... 340 부록 B. 중요한 추가 모듈 B.1 파일 처리 - Async 모듈 (1) ... 343 B.2 코드 흐름 관리 - Async 모듈 (2) ... 348 B.3 멀티 코어 처리 - cluster 모듈 ... 352 부록 C. 바이너리 모듈 C.1 바이너리 모듈 작성 ... 359 C.2 바이너리 모듈 빌드 ... 361 C.3 바이너리 모듈 사용 ... 363 부록 D. Mongo DB D.1 Mongo DB 설치 ... 365 윈도 설치 ... 366 우분투 설치 ... 367 맥 설치 ... 368 D.2 Mongo DB 기본 ... 369 데이터베이스와 컬렉션 ... 369 데이터 저장 ... 370 데이터 검색 ... 371 데이터 정렬 ... 373 특정 위치에 있는 데이터 선택 ... 374 데이터 수정 ... 375 데이터 삭제 ... 376 D.3 mongojs 모듈 ... 376 찾아보기 ... 379