Skip to content

fix: 백그라운드 STOMP heartbeat 안정화 - #56

Draft
aryu1217 wants to merge 2 commits into
mainfrom
dev
Draft

fix: 백그라운드 STOMP heartbeat 안정화#56
aryu1217 wants to merge 2 commits into
mainfrom
dev

Conversation

@aryu1217

Copy link
Copy Markdown
Member

변경 내용

  • 공용 STOMP 클라이언트의 outgoing heartbeat ticker를 TickerStrategy.Worker로 전환했습니다.
  • room membership와 follow presence에 같은 전략을 적용하고 기존 4초 heartbeat·5초 재접속 설정을 유지했습니다.
  • 생성 설정과 기존 room reconnect/token/subscription 흐름을 회귀 테스트했습니다.

변경 이유

브라우저 백그라운드 탭에서 기본 setInterval 기반 outgoing heartbeat가 throttling되어 STOMP 세션이 불안정해질 수 있습니다. 설치된 @stomp/stompjs 7.3.0의 Worker ticker를 사용해 이 구간을 완화합니다.

영향 범위

  • UI / 사용자 흐름
  • API 요청·응답 계약
  • React Query 캐시
  • WebSocket / 실시간 상태
  • 인증 / 보안
  • 문서 / 개발 도구

검증

  • npm run lint
  • npm run test — 149 files / 590 tests
  • npm run build
  • 관련 수동 시나리오 확인
  • 실패·로딩·빈 상태 확인

검증 결과 및 재현 방법:

  • 구현 targeted: 5 files / 28 tests 통과
  • fresh reviewer targeted: 5 files / 33 tests 통과
  • fresh read-only QA: pass, blocking finding 없음

리뷰 포인트

  • createStompClient의 heartbeatStrategy만 Worker로 바뀌고 heartbeatIncoming/outgoing 4000ms, reconnectDelay 5000ms가 유지되는지 확인 부탁드립니다.
  • 별도 Worker 파일, visibilitychange 처리, room reconnect lifecycle 변경은 없습니다.

기능별 커밋

  • d49970b fix(websocket): 백그라운드 heartbeat에 Worker 적용 — 설정·회귀 테스트와 QA 기록

위험 및 후속 작업

  • Blob Worker를 차단하는 외부 CSP가 있으면 worker-src blob: 허용 여부를 운영 브라우저에서 확인해야 합니다.
  • Worker는 outgoing ticker만 완화하며 탭 discard, OS 절전, 완전 freeze, incoming timer는 해결하지 않습니다.
  • 운영 A/B에서 heartbeat frame 간격, 재접속 횟수, OWNER_ABSENCE_TIMEOUT, CSP 오류를 확인해야 합니다.
  • 백엔드 삭제 예약 취소와 삭제 직전 방장 세션 재검증은 별도 범위입니다.

추적 정보

  • Execution plan: docs/exec-plans/active/2026-08-24-stomp-worker-heartbeat/plan.md
  • Selected skills: queuing-feature-delivery, frontend-architecture-guardrails, queuing-qa-reviewer
  • QA result: pass

@vercel

vercel Bot commented Aug 24, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
queuing Ready Ready Preview Aug 24, 2026 6:55am

@coderabbitai

coderabbitai Bot commented Aug 24, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant