Repository navigation
[FEAT] 라이브 공유 사회자 단일 세션 및 사회자 부재 처리 - #497
Conversation
- 공유 시작마다 사회자 세션 식별자를 만들어 구독·발행 헤더(X-Chairman-Session)에 첨부 - REPLACED 알림을 받으면 밀려난 상태로 전환하고 자동 재연결 없이 연결 해제 - 청중 소켓에서 CHAIRMAN_ABSENT를 사회자 메시지와 분리해 chairmanAbsentAt으로 노출 - 구독 헤더 지원(재구독 시 최신 값 적용), 수동 연결 해제 후에도 리스너 유지 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 다른 탭/기기에서 공유를 시작하면 공유 모달로 안내하고 이 화면에서 다시 공유할 수 있게 함 - 밀려난 상태에서는 모달이 열려 있어도 자동으로 다시 연결하지 않음 - 현재 공유 중인 사회자 탭의 공유 버튼에 펄스 점 표시 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 서버의 CHAIRMAN_ABSENT 알림 또는 연결 후 15초 동안 사회자 메시지가 없으면 absent로 판정 - 타이머 배경색 계산을 공용 유틸로 분리하고 청중 화면에도 같은 기준 적용 (30초 이하 노란색, 10초 이하 붉은색, 0초 미만 회색) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
시간 가시성을 해쳐 청중 화면은 기존처럼 배경색을 바꾸지 않는다. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 공유 중이면 사회자 토큰 만료 1분 전에 새 토큰을 받아 발행이 끊기지 않게 함 - 절전 등으로 갱신을 놓쳐 만료된 토큰으로 발행하면 즉시 새 토큰을 요청 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (26)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. Walkthrough소켓 구독 및 발행에 사회자 세션 ID를 전달하고 세션 교체를 처리합니다. 청중 화면은 서버 알림과 연결 후 무응답으로 사회자 부재를 판단합니다. 라이브 공유 버튼과 모달에 공유 상태 및 재시작 UI를 추가하고, 사회자 토큰 갱신을 처리합니다. Changes라이브 공유 세션
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant ChairmanTab
participant useChairmanSocket
participant SocketManager
participant Server
participant useLiveShare
participant LiveShareModal
ChairmanTab->>useChairmanSocket: connect()
useChairmanSocket->>SocketManager: subscribe with X-Chairman-Session
SocketManager->>Server: subscribe to chairman channel
Server-->>SocketManager: REPLACED notice
SocketManager-->>useChairmanSocket: deliver notice
useChairmanSocket->>SocketManager: disconnect()
useChairmanSocket-->>useLiveShare: set isReplaced
useLiveShare->>LiveShareModal: open replaced state
LiveShareModal-->>useLiveShare: restartLiveShare()
useLiveShare->>useChairmanSocket: connect with a new session ID
Suggested reviewers: Merge Risk: ⚪ Minimal · up to No identified issue blocks merging after normal checks. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 20 functions across 24 files. (2 skipped: 2 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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. 토끼가 새 연결 소식을 듣고 Comment |
🚀 Preview 배포 완료!
|
|
🧹 Preview 배포가 정리되었습니다. |
🚩 연관 이슈
closed #496
📝 작업 내용
사회자 단일 세션 (다중 탭 / 재연결 경합)
X-Chairman-Session)에 첨부 (자동 재연결 시에는 유지)REPLACED알림을 받으면 밀려난 상태로 전환하고 자동 재연결 없이 연결 해제사회자 부재 처리 (청중)
CHAIRMAN_ABSENT알림 또는 연결 후 15초 동안 사회자 메시지가 없으면absent로 판정해 기존 부재 안내 표시CHAIRMAN_ABSENT는 사회자 메시지 수신 기록·version 기준과 분리사회자 토큰 선제 갱신
기타
useSocket.subscribe에 헤더 지원 (함수로 넘기면 재구독 시 최신 값 적용)SocketManager.disconnect()가 리스너를 지우던 문제 수정 (같은 화면에서 다시 연결하면 로딩이 끝나지 않던 버그)테스트
🏞️ 스크린샷 (선택)
🗣️ 리뷰 요구사항 (선택)
🤖 Generated with Claude Code
Summary by CodeRabbit