- SockJS 사용하기
- 최초 handshaking 타이밍?
연결 시간?- heartbeat 에 대해서 클라이언트에서 해야할일 찾아보기
- 인터벌이나 타임아웃만 설정하면 될듯
- 구독할떄 url
- /api/chat/init
- 데이터 전송 url
- /api/chat/partyId
- 인증, 인가 언제 할지
- 연결 요청 시
- 안읽은 메세지에 대한 처리
- 채팅 페이지가 아닌 곳에서 응답이 왔을 때, 사용자에게 알림만 주고, 채팅방 카운트 증가
- 데이터
- 최초 채팅창 접속
- 요청
- 응답
- 웹소켓
- 요청(ws)
- handshaking : JWT 토큰
- chatting(publish) : JWT 토큰, partyId, message
- JWT 토큰 : 헤더, partyId : path, message : body
- 채팅 시, 채팅 내역 사이드에서 대기 중인 ui 보여주다가 서버에 반영되면 시간 띄우게
- 응답(ws)
- handshaking : 연결 응답
- chatting : message_id, user_id, username, message, time,
{ id: 1, userId: 3, username: "멋쟁이 호랑이", message: "메세지입니당", createdAt: "2022-01-19T08:05:19" }
- 요청
- 응답
백앤드 로직
- /api/chat/init 으로 Connect 연결
- /api/chat/sub/partyId 로 Subscribe
- /api/chat/pub/PartyId 로 Send
- 위의 3개의 단계 모두 인증, 인가 처리를 함
- Send가 들어오면 채팅 정보 저장 후 구독한 사람에게 전송