Skip to content

[WatchingSession] 레디스 TTL 배치로 갱신, 레디스나 웹소켓 서버 비정상 종료시 대응 추가#124

Merged
jeonggiju merged 4 commits intodevfrom
feature/modify-WatchingSession-Batch-Refresh#117
Jan 29, 2026
Merged

[WatchingSession] 레디스 TTL 배치로 갱신, 레디스나 웹소켓 서버 비정상 종료시 대응 추가#124
jeonggiju merged 4 commits intodevfrom
feature/modify-WatchingSession-Batch-Refresh#117

Conversation

@userjin2123
Copy link
Copy Markdown
Contributor

PR 요약

레디스 TTL 배치로 갱신, 레디스나 웹소켓 서버 비정상 종료시 대응 추가

체크리스트

상세 설명

  • WebSocketSessionHolder에 이미 웹소켓 세션이 있는데 이를 세션맵핑에 까지 저장하면 유지보수 복잡도 올라가고 SRP 위반이기에 Holder에서만 실제 웹소켓 세션 정보를 가지도록 변경

  • 웹소켓 서버가 비정상 종료되었을 때 레디스 Sorted Set에 콘텐츠별 시청 세션을 담는 곳에 시청자 수가 정리안되는 문제 발견, 재시작시 이를 해결하기 위해서 비정상 세션들 삭제

검증 단계

추가 코멘트

- Heartbeat에서 Redis 호출 제거, 인메모리 lastActiveTime만 갱신
- 하트비트 시 마다 갱신하면 유저 증가시 처리량 폭발하는걸 대비하여 배치로 처리하도록 결정
- 30초 주기 배치로 JWT 검증 및 Redis TTL 일괄 갱신
- JWT 만료 시 WebSocket 강제 종료 (CloseStatus 4001)
- WebSocketSession 보관을 위한 Holder/Decorator 추가
…에 정리 로직추가

- WebSocketSessionHolder에 이미 웹소켓 세션이 있는데 이를 세션맵핑에 까지 저장하면 유지보수 복잡도 올라가고 SRP 위반이기에 Holder에서만 실제 웹소켓 세션 정보를 가지도록 변경

- 웹소켓 서버가 비정상 종료되었을 때 레디스 Sorted Set에 콘텐츠별 시청 세션을 담는 곳에 시청자 수가 정리안되는 문제 발견, 재시작시 이를 해결하기 위해서 비정상 세션들 삭제
@userjin2123 userjin2123 self-assigned this Jan 28, 2026
@userjin2123 userjin2123 added the feat 새로운 기능 추가 label Jan 28, 2026
@jeonggiju jeonggiju merged commit 92d169f into dev Jan 29, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat 새로운 기능 추가

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[WebSocket] Heartbeat 인메모리 처리 및 배치 JWT 검증 시스템 구현

2 participants