Skip to content

Repository files navigation

💬 SIRU Chat

SIRU Chat은 1:1 및 그룹 채팅을 지원하는 실시간 채팅 서비스입니다. STOMP 기반의 WebSocket을 활용하며, 채팅 기능은 RabbitMQ와 MongoDB를 활용하였습니다. 또한 SSE를 통해 현재 구독중이 아닌 채팅방의 메시지 알림 기능을 구현하였습니다.


🔧 주요 기능

  • 1:1 채팅

    • 상대방 닉네임 기반 자동 채팅방 이름
    • 퇴장 시 active = false, 재입장 시 deactivatedAt 이후 메시지만 조회
    • 상대방 메시지 수신 시 자동 재참여 처리
  • 그룹 채팅

    • 명시적 채팅방 이름으로 생성
    • 자유롭게 입장 및 퇴장 가능
  • 메시지 처리

    • STOMP를 통한 실시간 송수신
    • RabbitMQ로 메시지 브로드캐스팅
    • MongoDB에 메시지 저장 및 조회
    • Redis를 통한 채팅방 ID 생성 관리
  • 채팅방 목록

    • 현재 참여 중인 채팅방만 표시
    • 각 채팅방의 가장 최근 메시지 포함 (참여 시간 이후 기준)
  • SSE(Server-Sent Events)

    • Redis 기반 유저-채팅방 구독 정보 관리
    • 채팅방 참여/생성 시 Redis에 반영
    • 실시간 메시지 수신 (백그라운드 탭에서도 동작)

📌 기술 스택

  • Spring Boot
  • WebSocket (STOMP)
  • RabbitMQ
  • MongoDB (채팅 정보)
  • Redis
  • MySQL (회원 정보)

🖼️ 구현 사항(스크린샷)

메인화면

image

그룹채팅 및 사용자 찾기

image image

그룹 채팅방 만들기

image

그룹 채팅방

image

추가된 그룹 채팅방과 참여자 리스트

image image

입장 이후 메시지만 로딩

image

1:1 채팅방

image

SSE를 이용한 알림 및 채팅방 내역의 최근 메시지 업데이트

image

About

Stomp를 이용한 채팅 프로그램

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages