Skip to content

feat: 세션 자동 비활성화 및 상태 브로드캐스팅 로직 개선(#41)#42

Merged
1anminJ merged 1 commit intomainfrom
feat/websocket
Oct 19, 2025
Merged

feat: 세션 자동 비활성화 및 상태 브로드캐스팅 로직 개선(#41)#42
1anminJ merged 1 commit intomainfrom
feat/websocket

Conversation

@1anminJ
Copy link
Copy Markdown
Contributor

@1anminJ 1anminJ commented Oct 19, 2025

📋 PR 개요

마지막 참여자가 세션을 떠날 때 해당 세션을 자동으로 비활성화하는 기능을 구현하고, 참여자 상태 변경 시 최신 목록을 안정적으로 동기화하도록 방송 로직을 리팩토링합니다.


💻 주요 변경 사항

  • 세션 자동 비활성화 기능 구현:

    • WebSocketRoomService에 세션별 실시간 참여자 목록을 추적하는 로직(sessionParticipants Map 및 관련 메소드)을 추가했습니다.
    • WebSocketEventListenerhandleWebSocketDisconnectListener에, 나가는 사용자가 세션의 마지막 참여자인 경우 해당 CodeSession의 상태를 INACTIVE로 업데이트하는 로직을 구현했습니다.
  • 상태 브로드캐스팅 로직 중앙화 (리팩토링):

    • 기존에 WebSocketEventListener에 있던 broadcastRoomState 헬퍼 메소드를 RoomService로 이동시키고 public으로 변경하여, 프로젝트 전역에서 호출할 수 있는 중앙 방송 기능으로 만들었습니다.
    • 이제 RoomServicejoinRoom, kickParticipant 메소드와 WebSocketEventListenerhandleWebSocketSubscribeListener, handleWebSocketDisconnectListener가 모두 이 중앙화된 broadcastRoomState 메소드를 호출합니다.
    • 이를 통해, 어떤 경로로든 참여자 상태가 변경되면 모든 클라이언트가 항상 최신 목록을 수신하는 것을 보장합니다.

🔗 관련 이슈

@1anminJ 1anminJ merged commit 5cfeb78 into main Oct 19, 2025
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.

feat: 세션 자동 비활성화 및 상태 브로드캐스팅 로직 개선

1 participant