Skip to content

YoungWonBackendStudy/chat

Repository files navigation

Chat Application

🛠️ Environment

  • Java 17
  • Spring Boot 3.3
  • H2 Database (in-memory)
  • Redis

📖 Getting Started

Prerequisites

  • Docker

Run with Docker

docker compose up -d

API Document 접속

요구 사항 분석

채팅방 조회

sequenceDiagram
    Client ->> Chat: 채팅 목록 조회
    Chat -->> Client: 채팅 목록(이름, 최근 30분 접속자, 최근 메시지)
Loading

채팅방 생성

sequenceDiagram
    Client ->> Chat: 채팅방 생성(사용자 ID, 채팅방 이름)
    Chat -->> Client: 채팅방 생성 완료
Loading

채팅 조회 (Polling)

sequenceDiagram
    loop Polling - 채팅 내역 업데이트
        Client ->> Chat: 채팅 조회(사용자 ID, 채팅방 ID)
        Chat ->> Chat: 채팅방 접속 내역 저장(사용자 ID, 채팅방 ID)
        Chat -->> Client: 채팅 내역 (발송자, 발송시간, 내용)
    end
Loading

채팅 발송

sequenceDiagram
    Client ->> Chat: 채팅 발송(사용자 ID, 채팅방 ID, 내용)
    Chat ->> Chat: 채팅방 상태 업데이트(채팅 내용)
    Chat -->> Client: 채팅 발송 완료
Loading

채팅방 최근 사용자 정보 Scheduling

sequenceDiagram
    Scheduler ->> Chat: Trigger
    Chat ->> Chat: 최근 30분 접속 정보 조회
    Chat ->> Chat: 채팅방 최근 접속자 수 업데이트
Loading

ERD

erDiagram
    user {
        long id
    }
    
    chatRoom {
        long id
        string title
        long recent_chat_users
        string recent_chat_message
        date created_at
        date deleted_at
    }
    
    chatMessage {
        long id
        long chat_room_id
        long user_id
        string message
        date created_at
        date deleted_at
    }
    
    chatRoomUserHistory {
        long id
        long user_id
        long chat_room_id
        date created_at
    }
    
    user ||--|{ chatMessage: send
    chatRoom ||--|{ chatMessage: has
Loading

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published