Skip to content

Story: WebSocket 실시간 통신

메타

항목
Story IDE-05-S-05
EpicE-05 연동 자동화
상태ready-for-dev
우선순위P0
규모M
담당 개발자하록 (BE), 수민 (FE)

사용자 스토리

As a 셀러,
I want 인증번호가 도착하면 화면에 즉시 표시되길 원한다,
So that 새로고침 없이 바로 확인할 수 있다.


수락 기준 (Acceptance Criteria)

AC-01: WebSocket 연결

항목내용
Given셀러가 연동 페이지에 진입했을 때
When페이지가 로드되면
ThenWebSocket 연결이 자동으로 수립된다

AC-02: 인증번호 실시간 표시

항목내용
GivenWebSocket 연결된 상태에서
When서버에서 SMS 인증번호를 수신하면
Then셀러 화면에 즉시 인증번호가 표시된다

AC-03: 상태 변경 푸시

항목내용
GivenWebSocket 연결된 상태에서
When세션 상태가 변경되면
Then클라이언트에 상태 변경이 즉시 푸시된다

AC-04: 재연결 처리

항목내용
GivenWebSocket 연결이 끊어졌을 때
When재연결을 시도하면
Then자동으로 3회까지 재연결을 시도한다
And실패 시 폴링 모드로 전환된다

태스크 분해

Task 1: BE - WebSocket 서버 AC-01, AC-03

  • [ ] 1.1: WebSocket 서버 설정 (Socket.io 또는 ws)
  • [ ] 1.2: 세션별 룸 관리 (session_id 기반)
  • [ ] 1.3: 상태 변경 시 브로드캐스트

Task 2: BE - 이벤트 정의 AC-02, AC-03

  • [ ] 2.1: SMS_CODE_RECEIVED 이벤트
  • [ ] 2.2: STATUS_CHANGED 이벤트
  • [ ] 2.3: LOCK_ACQUIRED 이벤트
  • [ ] 2.4: LOCK_WAIT 이벤트

Task 3: FE - WebSocket 클라이언트 AC-01, AC-04

  • [ ] 3.1: WebSocket 연결 훅 구현
  • [ ] 3.2: 이벤트 핸들러 구현
  • [ ] 3.3: 자동 재연결 로직 (3회)
  • [ ] 3.4: 폴링 Fallback

WebSocket 이벤트

서버 → 클라이언트

이벤트페이로드설명
SMS_CODE_RECEIVED{code: "123456"}SMS 인증번호 수신
EMAIL_CODE_RECEIVED{code: "654321"}이메일 인증번호 수신
STATUS_CHANGED{status: "LOCKED", ...}세션 상태 변경
LOCK_ACQUIRED{expires_in: 120}Lock 획득
LOCK_WAIT{position: 2, estimated: 90}Lock 대기

클라이언트 → 서버

이벤트페이로드설명
JOIN_SESSION{session_id: "xxx"}세션 룸 참여
LEAVE_SESSION{session_id: "xxx"}세션 룸 퇴장

Dev Notes

기술 선택

옵션장점단점
Socket.io자동 재연결, 폴백라이브러리 의존
ws (native)가벼움직접 구현 필요

Socket.io 추천 (재연결, 브라우저 호환성)

의존성

  • E-05-S-04: 세션 상태 머신 (상태 변경 트리거)
  • E-05-S-02: SMS Webhook (코드 수신 트리거)

생성일: 2026-01-20

장사왕 Product Team