Skip to content

Conversation

@DHkimgit
Copy link
Collaborator

@DHkimgit DHkimgit commented Jan 26, 2026

🔍 개요

  • 개발 이유: 기존 WebSocket 기반 채팅 시스템의 연결 불안정성 문제 및 유지보수 어려움 해결
    • REST 기반 API 추가 (기존 웹 소켓 코드는 유지)
    • Redis TTL을 활용한 사용자 접속 상태 관리 로직 구현
    • 접속 상태에 따른 '읽음 처리' 및 'FCM 발송' 자동화

🚀 주요 변경 내용

  • Polling 기반 채팅 구현

    • Heartbeat 메커니즘: pollAllMessages 호출 시마다 Redis에 사용자 세션을 갱신 (TTL 20초)하여 '접속 중' 상태를 유지
    • 자동 읽음 처리: 폴링 시 상대방이 보낸 메시지를 자동으로 '읽음' 처리
    • 메시지 저장 및 전송 로직:
      • 수신자의 Redis 세션 존재 여부를 확인하여 is_read 상태를 즉시 결정
      • 수신자가 오프라인(세션 만료)일 경우에만 FCM 알림 이벤트를 발행
  • REST API 컨트롤러 추가

    • GET /messages: 메시지 조회 및 세션 갱신 (Polling용)
    • POST /messages: 메시지 전송 (기존 WS send 대체)
    • POST /leave: 채팅방 명시적 퇴장 (Session 즉시 삭제)

💬 참고 사항


✅ Checklist (완료 조건)

  • 코드 스타일 가이드 준수
  • 테스트 코드 포함됨
  • Reviewers / Assignees / Labels 지정 완료
  • 보안 및 민감 정보 검증 (API 키, 환경 변수, 개인정보 등)

@DHkimgit DHkimgit self-assigned this Jan 26, 2026
@DHkimgit DHkimgit added the Team Campus 캠퍼스 팀에서 작업할 이슈입니다 label Jan 26, 2026
@github-actions
Copy link

Unit Test Results

673 tests  ±0   670 ✔️ ±0   1m 16s ⏱️ +2s
165 suites ±0       3 💤 ±0 
165 files   ±0       0 ±0 

Results for commit eba211d. ± Comparison against base commit 40cadfb.

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

Labels

Team Campus 캠퍼스 팀에서 작업할 이슈입니다

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[캠퍼스] 분실물 쪽지 Polling API

2 participants