토마스_구현 과정 정리
[전체 비즈니스 로직 설계_토마스]
-
파티 생성 및 참가
- 방장인 경우
- 사용자가 배달파티 생성 요청→ DeliveryPartyMember 생성 및 파티장을 멤버로 추가
- 참가자인 경우
- 배달파티 참가 요청 → DeliveryPartyMember 생성 및 파티장을 멤버로 추가
-
채팅방 생성
- → 클라에서 채팅방 생성 요청(Restful API) → 몽고서버 채팅방 생성 후
- → RabbitMQ 채팅방생성API요청 → fanOutExchange 생성 요청
-
채팅방 입장
- 방장인 경우
- → 클라에서 채팅방 생성 요청(Restful API) → 몽고서버 채팅방 생성 후 → 채팅방PK값인 chattingRoomUUID반환 → 클라에서 RabbitMQ 채팅방생성API요청 → RabbitMQ 채팅 큐, fanOutExchange 생성 요청(바인딩 포함 진행) → 입장 메시지 publish 요청 → 서버에서 채팅 메시지 db에 저장 → rabbitMQ에 메시지 publish요청 → n명의 채팅방 멤버 메시지 수신
- 참가자인 경우
- 채팅방 입장
- → 클라에서 몽고 서버 채팅방 입장 요청 → 몽고 채팅방 멤버 생성 및 추가 → rabbitmq 큐 없으면 rabbitmq 큐 생성 후 바인딩 → 입장 시스템 메시지 publish 요청 → 서버에서 채팅 메시지 db에 저장 → rabbitMQ에 메시지 publish요청 → n명의 채팅방 멤버 메시지 수신
-
채팅 전송
- 채팅방 입장 후 → 클라에서 웹소켓 연결 요청 → 전송 메시지 웹소켓으로 전송(chatId = “none”으로) → 몽고 서버에서 Chatting 저장 후 → rabbitMQ Publish 요청 → 클라 단체 체팅 수신 → 클라에서 chatType( publish/ read)이 publish면 화면에 채팅 표시
-
채팅 읽음 표시
- 클라에서 웹소켓으로 읽음 요청 → readMembers 리스트에 memberId 추가 후 mongoDB 저장 → 클라에서 chatType( publish/ read)이 read면 메시지의 안 읽은 사람 수 만 갱신
updated At. 2022-11-12
채팅 전체 구조
(구조도 만들어서 넣을 예정)
큐 생성 조건