Skip to content

[BE] 채팅방 이벤트 정리

Jungmin edited this page Dec 14, 2023 · 1 revision

image

유저가 그룹에 참여한다. (enter)

  1. mysql의 user_gorup 데이터 생성, mongodb Rooms Document에 ChatUser 추가, ChatUser Document 생성
  2. 이 때 last_chat_log_id ⇒ 입장 당시 채팅방(Rooms)의 마지막 메세지로 저장한다.

유저가 채팅방에 입장한다. (join)

  1. mongodb의 last_chat_log_id를 삭제G한다.
  2. 변경된 정보를 토대로 unread를 계산해서 해당 채팅방 전체에 전달한다.

유저가 채팅방을 떠난다. (disconnect)

  1. 유저가 채팅방 페이지를 떠나면 소켓 연결이 끊어진다.
  2. 유저의 마지막 메세지를 당시 채팅방의 마지막 메세지 id로 업데이트한다.

유저가 메세지를 보낸다. (chat)

  1. mongodb의 message에 저장한다.
  2. 해당 채팅방에 존재하는 유저들에게 메세지를 보낸다.

유저가 그룹을 나간다.(leave)

  1. mysql의 user_group 데이터를 삭제한다(hard_delete). mongodb chatUser isLeave을 true로 설정한다.(soft_delete)
    1. 몽고디비는 이미 나간 유저의 채팅 기록들을 보여줘야하므로 소프트 딜리트로 채팅방의 모든 유저들을 관리한다.
  2. 해당 유저가 나갔다는 시스템 메세지를 Room 내부에 생성한다.
  3. 유저리스트와 방정보가 변경된다.
  4. 채팅방 세션에 존재하는 유저들에게 업데이트된 정보 및 시스템 메세지를 전달한다.

방장이 특정 유저를 강퇴한다.(kick)

  1. 해당 유저가 방장인지, 강퇴하려는 유저가 있는지 검증한다.
  2. 이후 로직은 leave와 동일하다.

채팅방 정보를 수정한다.(roomInfo)

  1. mysql의 group 방정보를 업데이트한다.

채팅방 이전 메세지를 전달한다.(chatLog)

유저가 그룹을 만든다. (create)

  1. mysql의 user_group 데이터 생성, mongodb Rooms Document, ChatUser Document 생성

Lock Festival 🔒

Rules

개발일지

Description

학습 노트

회의록

사전 회의
1주차 회의록
2주차 회의록
3주차 회의록
4주차 회의록
5주차 회의록
6주차 회의록

데일리 스크럼

1주차
2주차
3주차
4주차
5주차
6주차

회고록

1주차 회고록
2주차 회고록
3주차 회고록
4주차 회고록
5주차 회고록
6주차 회고록

스프린트

멘토링 일지

Clone this wiki locally