Skip to content

[Refactor] RTC Host·Viewer Session 및 LiveKit Lifecycle 재검증 #43

Description

@lioba00700

🎯 목표

RTC Host / Viewer Session 생성부터 LiveKit 연결 및 종료까지의 Lifecycle을 재검증한다.

Session과 Media Track의 수명, 연결·종료·Cleanup 책임 경계를 확인하고 개선 필요 여부를 판단한다.

🔍 범위

  • Host / Viewer Session
  • LiveKit Token / Room
  • Local / Remote Track
  • Publisher
  • 연결 종료 / Cleanup

✅ 완료 조건

  • Host / Viewer Session 생성 및 연결 흐름 검증
  • Session과 LiveKit Room / Track의 수명 관계 확인
  • Publisher 시작·종료 및 Cleanup 순서 검증
  • 화면 이탈·중복 종료·지연된 연결 완료 처리 확인
  • Session / Page / Publisher 책임 경계 검토
  • 구조적 문제 및 리팩토링 필요 여부 판단
  • 필요한 Architecture / ADR 문서 갱신

Activity

  1. self-assigned this
    on Aug 8, 2026
  2. lioba00700 commented on Sep 2, 2026

    @lioba00700
    MemberAuthor

    pages 레이어의 camera 슬라이스에 페이지 컴포넌트가 아닌 컴포넌트도 함께 구성되어있음
    -> 각 파일의 책임 확인 후 알맞는 레이어 레벨로 이동하는 작업이 필요함

  3. lioba00700 commented on Sep 2, 2026

    @lioba00700
    MemberAuthor

    camera-page 컴포넌트의 코드가 700줄 이상으로 비대함.
    대부분이 비즈니스 로직이므로, 커스텀 훅 등을 정의하여 책임을 분리하고, 각 기능의 응집도를 높이는 작업이 필요함

  4. lioba00700 commented on Sep 2, 2026

    @lioba00700
    MemberAuthor

    SharingCameraSheet(방 공유 바텀시트)를 페이지 컴포넌트에서 분리하는 작업을 고려

  5. lioba00700 commented on Sep 2, 2026

    @lioba00700
    MemberAuthor

    handleOpenShare 방 생성 요청에서
    방 만료 시간 파라미터

    expiresInMinutes: 60,

    에서 매직 넘버 60을 상수로 선언해서 사용하도록 수정

  6. lioba00700 commented on Sep 2, 2026

    @lioba00700
    MemberAuthor

    Host / Viewer의 LiveKitConnection 상태가 각각 실제 사용처 한 곳에서만 소비되고 있음.
    현재 RTC Store의 liveKitConnection은 Viewer에서만 사용되며, Host는 동일한 정보를 camera-page의 broadcastConnection 로컬 상태로 함께 관리하고 있어 전역 상태로 유지하는 이점이 낮음.

    공통 RtcLiveKitConnection 타입은 유지하되, Host / Viewer의 connection 상태는 각 lifecycle 소유 범위에 맞게 로컬 상태로 관리하고 RTC Store에서는 제거하는 방향을 검토

  7. lioba00700 commented on Sep 2, 2026

    @lioba00700
    MemberAuthor

    Host 페이지 이탈 시 RTC 종료 lifecycle이 일관되게 보장되는지 재검증 필요.

    현재 camera-page의 뒤로가기 / close 경로는 router.back()으로 바로 이탈하며, RtcHostLiveKitPage unmount cleanup에서 Publisher 및 LiveKit Room은 정리되지만 서버 RTC Room 종료(endRoom)와 hostSession 정리는 수행되지 않음.

    deliverResult에서는 화면 비활성 상태에서 결과 전송을 막고 재연결하지 않도록 guard하고 있으므로, 페이지 이탈 자체도 명시적인 종료 플로우(confirm -> publisher/track cleanup -> room disconnect -> server room end -> session clear -> navigation)로 통합하는 방향 검토

  8. lioba00700 commented on Sep 2, 2026

    @lioba00700
    MemberAuthor

    Viewer 페이지 이탈 시 종료 lifecycle도 Host와 동일한 기준으로 재검증 필요.

    현재 LiveKit 진입 전에는 handleCancelBeforeLiveKit에서 서버 leaveRoom 호출 후 Viewer Session을 정리하지만, LiveKit 진입 후에는 ViewerRoomContent.handleCancel에서 LiveKit room.disconnect() 후 finishViewerExit으로 Session만 정리하고 서버 leaveRoom은 호출하지 않음.

    Viewer의 페이지 이탈 정책을 server leave -> LiveKit disconnect -> session clear -> navigation과 같이 일관된 종료 플로우로 통합할지 검토 필요

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

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions