-
Notifications
You must be signed in to change notification settings - Fork 0
[BE] 채팅방 이벤트 정리
Jungmin edited this page Dec 14, 2023
·
1 revision
- mysql의 user_gorup 데이터 생성, mongodb Rooms Document에 ChatUser 추가, ChatUser Document 생성
- 이 때 last_chat_log_id ⇒ 입장 당시 채팅방(Rooms)의 마지막 메세지로 저장한다.
- mongodb의 last_chat_log_id를 삭제G한다.
- 변경된 정보를 토대로 unread를 계산해서 해당 채팅방 전체에 전달한다.
- 유저가 채팅방 페이지를 떠나면 소켓 연결이 끊어진다.
- 유저의 마지막 메세지를 당시 채팅방의 마지막 메세지 id로 업데이트한다.
- mongodb의 message에 저장한다.
- 해당 채팅방에 존재하는 유저들에게 메세지를 보낸다.
- mysql의 user_group 데이터를 삭제한다(hard_delete). mongodb chatUser isLeave을 true로 설정한다.(soft_delete)
- 몽고디비는 이미 나간 유저의 채팅 기록들을 보여줘야하므로 소프트 딜리트로 채팅방의 모든 유저들을 관리한다.
- 해당 유저가 나갔다는 시스템 메세지를 Room 내부에 생성한다.
- 유저리스트와 방정보가 변경된다.
- 채팅방 세션에 존재하는 유저들에게 업데이트된 정보 및 시스템 메세지를 전달한다.
- 해당 유저가 방장인지, 강퇴하려는 유저가 있는지 검증한다.
- 이후 로직은 leave와 동일하다.
- mysql의 group 방정보를 업데이트한다.
- mysql의 user_group 데이터 생성, mongodb Rooms Document, ChatUser Document 생성
- [FE] 성능 최적화(디바운스와 쓰로틀링)
- [FE] 채팅-1 채팅을 어떻게 저장할까?
- [FE] 채팅-2 읽지 않은 사람 수를 어떻게 계산할까?
- [FE] 채팅-3 프로필을 보여주는 경우
- [FE] 채팅-4 프로필을 보여주는 경우
- [FE] 채팅-5 프로필을 보여주는 경우
- [FE] 무한스크롤과 IntersectionObserver hook 만들기
- [FE] recoil의 atomFamily 사용하기
- [FE] 반응형 스켈레톤 UI 만들기
- [FE] svg파일을 React에서 컴포넌트처럼 사용하기
- [BE] 채팅방 이벤트 정리
- [BE] 안읽은 사람수 계산하기
- [BE] 크롤러 캐싱
- [BE] 네이버 소셜 로그인
- [BE] 테마 관련 API 캐싱적용
- [BE] S3을 사용해보았어요
- [BE] 성능테스트 환경 구축
- [BE] 채팅 아키텍처 구성하기
- [BE] swagger가 작성한 코드보다 길어질 때
- [BE] @OptionalGuard 데코레이터
4주차 회의록
5주차 회의록
6주차 회의록
- 12.09(토)