Dinogame을 만들어 보자
디렉토리 구조는 다음과 같다.
.
├── assets // 게임 데이터
│ ├── item.json
│ ├── item_unlock.json
│ └── stage.json
├── package-lock.json
├── package.json
├── public // 프론트엔드
├── readme.md
└── src // 서버 코드
├── app.js
├── constants.js
├── handlers // 비즈니스 로직
│ ├── game.handler.js
│ ├── handlerMapping.js
│ ├── helper.js
│ ├── regiser.handler.js
│ └── stage.handler.js
├── init // 필수 데이터, 기능 로드 (load)
│ ├── assets.js
│ └── socket.js
└── models // 세션 모델 관리
├── stage.model.js
└── user.model.js
src 에는 서버 관련된 코드 내용.
assets에는 데이터 테이블 관련 내용. 으로 정의한다.
데이터 관리에는 여러 방법이 있지만 이번에는 파일시스템으로 file로 관리하도록 하자.
웹소켓 통신을 활용하여 프로젝트를 개발할 것이다.
-
- 파일 시스템이란?
- Node.js의 fs (파일 시스템) 모듈은 파일 시스템에 접근하고, 파일을 읽고 쓰는 기능을 제공합니다.
- 동기적 및 비동기적 방식 모두로 파일 I/O 작업을 수행할 수 있습니다.
- 파일 생성, 읽기, 쓰기, 삭제, 수정 등의 작업을 할 수 있습니다.
- 다양한 형태의 파일 기반 작업을 가능하게 합니다.
- 게임의 핵심이라고 할 수 있는 데이터 테이블의 관리 방법은 여러가지가 있습니다.
- DB, CDN, file 등으로 테이블을 관리합니다.
- 이 프로젝트에서는 file로 테이블을 관리하게 됩니다.
**웹소켓(WebSocket)**은 클라이언트와 서버 간의 양방향 통신을 실시간으로 가능하게 해주는 프로토콜입니다. 웹소켓을 사용하면 서버와 클라이언트가 상시 연결을 유지할 수 있으며, 한쪽에서 데이터를 보내면 즉시 다른 쪽에서 받을 수 있습니다. 이 방식은 HTTP 요청-응답 방식과 달리, 서버도 클라이언트에게 능동적으로 데이터를 전송할 수 있는 것이 특징입니다.
웹소켓의 주요 특징
- 양방향 통신 (Full-duplex communication):
- 클라이언트와 서버가 서로 동시에 데이터를 주고받을 수 있습니다. 클라이언트가 서버로 데이터를 보내는 것뿐 아니라, 서버도 클라이언트에게 능동적으로 데이터를 전송할 수 있습니다.
- 실시간 데이터 전송:
- 연결이 설정된 후에는 메시지를 즉시 보내고 받을 수 있어 실시간 데이터를 다루는 애플리케이션에 적합합니다. 예를 들어, 채팅 애플리케이션, 온라인 게임, 주식 거래 플랫폼 등에서 유용하게 사용됩니다.
- 연결 유지 (Persistent connection):
- HTTP처럼 요청-응답 모델을 사용하지 않고, 일단 연결이 성립되면 지속적으로 데이터를 주고받을 수 있습니다. 연결이 끊어지기 전까지는 추가적인 연결 설정 없이도 데이터를 송수신할 수 있습니다.
즉 웹소켓 통신은 HTTP와 같이 req, res 로 요청이 있어야 응답이 있는 것이아닌 연결된 상태를 유지하면서 통신을 하게 되는것이다.
'내일배움캠프 > 본캠프' 카테고리의 다른 글
[TIL] 24.10.07 트래블슈팅 (0) | 2024.10.07 |
---|---|
[TIL] 24.10.04 (0) | 2024.10.04 |
[TIL] 24.09.26 (0) | 2024.09.26 |
[TIL] 24.09.13 (5) | 2024.09.13 |
[TIL] 24.09.12 트래블슈팅 (0) | 2024.09.12 |