채팅방

채팅방 생성

  1. room.ftl /chat/room api 호출

    1. ChatRoomController createRoom() 호출
      1. ChatRoomRepository hashOpsChatRoom에 put (”chat_rooms”, room id, chatRoom:instance) (레디스)
      2. chatRoom 반환
  2. room.ftl 성공하면 모든 방 목록 찾아서 보여줌

채팅방 입장

  1. room.ftl /room/enter/{roomId} 호출, roomdetail.ftl 로 이동
  2. '/chat/user' 호출
    1. ChatRoomController 에서 현재 로그인된 유저의 이름, 토큰이 담긴 LogInfo 반환

채팅방 구독

  1. 토큰 값 가지고 웹소켓 연결
    1. roomdetail.ftl 에서 /sub/chat/room/{roomId} subscribe (저 경로로 들어오는 데이터를 받아서 기존의 message 리스트에 추가)
      1. ?????

채팅방 나가기

채팅

<aside> 🔥 내가 친 채팅은 ws.send(”/pub/chat/message”, {token}, {message}) 로 보내지고

</aside>

<aside> 🔥 상대방이 보낸 채팅은 구독할 때 사용한 ws.subcribe(“/sub/chat/room/{romId}”)를 통해 자동으로 추가됨

</aside>

채팅하기

  1. roomdetail.ftl 에서 /pub/chat/message send
    1. 내 토큰값이랑 메세지json이랑 함께 보냄
    2. /pub이 setApplicationDestinationPrefixes 로 등록되어 있기 때문에 @MessageMapping으로 이어짐
    3. ChatController @MessageMapping("/chat/message") **어노테이션을 단 message 함수 실행
      1. 메세지 발신자에 토큰 닉네임 넣고 인원수도 넣은 다음 service로 보냄
    4. chatService 에서 어캐저캐 전송함