Skip to content

Conversation

@beomzun
Copy link
Contributor

@beomzun beomzun commented Mar 23, 2025

🛰️ Issue Number

🪐 작업 내용

  • WebSocket, Stomp를 사용하여 실시간 채팅 구현
  • 읽지 않은 채팅 수, 사용자의 채팅방 입장 여부를 Redis로 관리
    • 읽지 않은 채팅 수(Cache) : 반복되는 count 연산 방지
    • 채팅방 입장 여부(Session) : 메세지 전송 시 상대방의 상태에 따라 다른 경로, 내용으로 notification publish
  • 이벤트 리스너를 통해 사용자의 특정 채팅방 입장 여부 변경 및 상대방에게 notification publish
    • Subscribe : 사용자 상태 수정, 해당 채팅방에서 사용자가 읽지 않은 채팅 수 초기화, 상대방이 전송한 메세지에 표시되었던 읽지않음 표시 제거하도록 알림
    • Unsubscribe, Disconnect : 사용자 상태 변경
  • 전송 메세지 타입에 따라 추가 검증 진행
  • 파일 전송 시, http 프로토콜로 파일 전송 후 응답으로 받는 메타데이터를 stomp로 전송
  • 채팅방 입장 시, 인터셉터로 사용자가 채팅방의 구성원이 맞는지 검증
  • Redis의 key를 각 클래스에서 String으로 사용하지 않고, RedisKeyPrefix 클래스에서 static하게 관리

✅ Check List

  • 코드 작성 시 최선을 다했나요?
  • 코드가 정상적으로 컴파일되나요?
  • 테스트 코드를 작성 및 통과했나요?
  • merge할 브랜치의 위치를 확인했나요?
  • Label을 지정했나요?

🔉 같이 고민하고 싶은 부분 (없으면 생략)

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 실시간 채팅 기능 구현

2 participants