본문 바로가기
내일배움캠프/본캠프

[TIL] 24.09.30

by WaDDak 2024. 9. 30.

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로 관리하도록 하자.

웹소켓 통신을 활용하여 프로젝트를 개발할 것이다.

 

    1. 파일 시스템이란?
    ⁉️ ’fs’
    • Node.js의 fs (파일 시스템) 모듈은 파일 시스템에 접근하고, 파일을 읽고 쓰는 기능을 제공합니다.
    • 동기적 및 비동기적 방식 모두로 파일 I/O 작업을 수행할 수 있습니다.
    • 파일 생성, 읽기, 쓰기, 삭제, 수정 등의 작업을 할 수 있습니다.
    • 다양한 형태의 파일 기반 작업을 가능하게 합니다.
    ⁉️ 데이터 테이블의 관리 방법에 관해
    • 게임의 핵심이라고 할 수 있는 데이터 테이블의 관리 방법은 여러가지가 있습니다.
    • DB, CDN, file 등으로 테이블을 관리합니다.
    • 이 프로젝트에서는 file로 테이블을 관리하게 됩니다.

 

**웹소켓(WebSocket)**은 클라이언트와 서버 간의 양방향 통신을 실시간으로 가능하게 해주는 프로토콜입니다. 웹소켓을 사용하면 서버와 클라이언트가 상시 연결을 유지할 수 있으며, 한쪽에서 데이터를 보내면 즉시 다른 쪽에서 받을 수 있습니다. 이 방식은 HTTP 요청-응답 방식과 달리, 서버도 클라이언트에게 능동적으로 데이터를 전송할 수 있는 것이 특징입니다.

웹소켓의 주요 특징

  1. 양방향 통신 (Full-duplex communication):
    • 클라이언트와 서버가 서로 동시에 데이터를 주고받을 수 있습니다. 클라이언트가 서버로 데이터를 보내는 것뿐 아니라, 서버도 클라이언트에게 능동적으로 데이터를 전송할 수 있습니다.
  2. 실시간 데이터 전송:
    • 연결이 설정된 후에는 메시지를 즉시 보내고 받을 수 있어 실시간 데이터를 다루는 애플리케이션에 적합합니다. 예를 들어, 채팅 애플리케이션, 온라인 게임, 주식 거래 플랫폼 등에서 유용하게 사용됩니다.
  3. 연결 유지 (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