JWT 기반 인증 (Handshake Interceptor):
Http-Only 쿠키(JWT 포함)의 유효성을 검증했습니다.WebSocket 생명주기 관리 (WebSocketEventsListener):
세션 관리 및 중복 방지 (UserSessionRegistry):
Presence 기능:
WebSocketEventsListener는 사용자의 연결/해제 이벤트에 따라 상태를 자동으로 STUDYING 또는 OFFLINE으로 변경합니다.서비스 계층 리팩토링 (관심사 분리):
ChatMessageWriteService(DB 저장 책임)와 ChatBroadcastService(메시지 전송 책임)로 분리했습니다.SseEmitter를 사용하여 각 클라이언트와의 연결을 관리하고, 특정 이벤트(e.g., 스터디룸 입장)가 발생했을 때 NotificationService를 통해 관련 사용자들에게 실시간 알림을 전송했습니다.