Skip to content

[STORY] WebSocket 메시지 도메인 분리 #170

Description

@DDINGJOO

Parent Epic

Story 개요

WebSocket 메시지에 domain 필드를 추가하여 채팅/게임 메시지를 명확히 구분합니다.
프론트엔드는 domain 필드에 따라 적절한 핸들러로 라우팅합니다.

현재 상황

```javascript
// 현재: messageType만으로 구분
{ "messageType": "TEXT", "data": {...} }
{ "messageType": "GAME_START", "data": {...} }
{ "messageType": "DRAWING", "data": {...} }
```

변경 후

```javascript
// 변경 후: domain 필드 추가
{ "domain": "chat", "messageType": "TEXT", "data": {...} }
{ "domain": "game", "messageType": "GAME_START", "data": {...} }
{ "domain": "game", "messageType": "DRAWING", "data": {...} }
```

Acceptance Criteria

  • 모든 WebSocket 메시지에 domain 필드 포함 ("chat" | "game")
  • FE에서 domain 필드 기반으로 메시지 핸들러 분기
  • 기존 메시지 (domain 없음) 하위 호환 유지

Tasks

  • Task 2.1: [BE] 모든 브로드캐스트 메시지에 domain 필드 추가 (백엔드 팀)
  • Task 2.2: [FE] chatWebSocketService에 domain 기반 메시지 라우팅 추가
  • Task 2.3: [FE] 하위 호환 처리 (domain 없는 메시지 fallback)

메시지 분류

Chat Domain

messageType 설명
TEXT 일반 채팅 메시지
USER_JOIN 사용자 입장
USER_LEAVE 사용자 퇴장
SYSTEM 시스템 메시지

Game Domain

messageType 설명
GAME_START 게임 시작
GAME_END 게임 종료
ROUND_START 라운드 시작
ROUND_END 라운드 종료
DRAWING 그리기 데이터
DRAWING_CLEAR 캔버스 초기화
GUESS 정답 추측
CORRECT_ANSWER 정답 맞춤
SCORE_UPDATE 점수 갱신
HINT 힌트

우선순위

🟡 높음 - 훅 분리의 선행 작업

예상 작업량

  • FE: 0.5일
  • BE: 1일

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions