Home MQTT 기반 채팅 프로젝트 - 02
Post
Cancel

MQTT 기반 채팅 프로젝트 - 02

진행 사항

첫 포스팅후 한달 완성하고 남았을 시간이지만 많이 느려졌는데 아무튼 지금가지 된 부분과 바뀐 부분을 얘기해보겠습니다.

API Server

  1. 인증 사용 시나리오에서는 도입부여서 완성이 되어야 하지만 지금은 간단히 닉네임만 입력해서 진행하는 형태로 채팅 기능을 우선적으로 개발하기 위해 데모? 형식으로 만들었습니다.

  2. 서비스 API

    • 채팅방 생성, 목록
    • 메시지 목록, 저장

위 API들은 GORM을 이용하여 Router <- Handler <- Repository 구조로 구현했습니다.

Webhook

  • 중간에 메세지를 저장하기 위한 간단한 프로세스.
  • 발신과 수신을 하기위함 토픽을 분리하여 구성.
  • Webhook에서 메세지 ID를 발급하고 DB에 저장, Client 수신 토픽으로 Pub.

Webhook Flow

flowchart TD
    %% 스타일 정의 (포스팅용 예쁜 색상)
    classDef server fill:#f9f,stroke:#333,stroke-width:2px;
    classDef client fill:#bbf,stroke:#333,stroke-width:2px;
    classDef broker fill:#f96,stroke:#333,stroke-width:2px;
    classDef db fill:#9f9,stroke:#333,stroke-width:2px;

    %% 노드 정의
    Client[Godot Client]:::client
    Server[Golang HTTP Server]:::server
    Broker[MQTT Broker]:::broker
    Webhook[Go Webhook Worker]:::server
    DB[(Database)]:::db

    %% HTTP / REST API 흐름
    Server <--> |데이터 저장 & 읽기| DB

    %% 실시간 Pub/Sub 흐름
    Client <--> |1. 실시간 채팅 발신 Pub| Broker
    
    %% 메시지 영속화 (가장 중요한 백엔드 파이프라인)
    Broker --> |2. 발신 토픽으로 수신| Webhook
    Webhook --> |3. 메시지 적재 요청| Server
    Webhook --> |3. Client 수신 토픽으로 Pub| Broker

Client

  • Godot으로 구성된 Client입니다.
  • 구조나 코드상? 개발 툴이 상대적으로 생소해서 새롭게 접한 부분은 따로 포스팅을 해보겠습니다.
클라이언트-01 클라이언트-02 클라이언트-03

마무리

  • 최대한 간단히 각 기능을 구현하는데 우선으로 기술들을 적용해보자라고 시작해서 빠르게 될줄 알았는데 조금씩만 사용하는것인데도 어렵네용.

아직 배포환경이나 DB의 대한 정보는 적지 않아서 다음 포스팅에 적어봐야겠습니다.

This post is licensed under CC BY 4.0 by the author.

MQTT 기반 채팅 프로젝트

-