실제 코드로 작성된 내용을 설명하기전에 코드 흐름(진행순서)를 소개합니다.
when where what(do)
1) 서버시작 repository map(roomId, chatRoom클래스)생성
2) room입장 room 뷰 chatHandler에 유저가 어느방(roomId)에 들어갔는지를 알림
2-1) room입장 chatHandler 뷰로부터 전달받은 roomId(key)와 연결된 chatRoom클래스(value)를 repository에서 만든 map에서 꺼냄
2-2) room입장 chatHandler 꺼낸 chatRoom클래스로 입장한 유저(세션)정보를 보냄
3) room입장 chatRoom 전달받은 유저(세션)정보를 set 에 넣는다.
※중요한 부분※
방마다 roomId가 다름으로, 뷰에서 핸들러로 다른 roomId를 보낸다.
다른 roomId이므로 다른 chatRoom클래스로 유저(세션)정보를 보낸다.
when where what(do)
1) 메시지 전송 room 뷰 chatHandler에 유저가 어느방(roomId)에 있는지와 전송하려는 메시지를 받음
2) 메시지 전송 chatHandler 뷰로부터 전달받은 roomId(key)와 연결된 chatRoom클래스(value)를 repository에서 만든 map에서 꺼냄
2-1) 메시지 전송 chatHandler 꺼낸 chatRoom클래스로 입장한 유저(세션)정보와 메세지를 보냄
3) 메시지 전송 chatRoom chatRoom클래스에 있는 set에 등록된 세션들에게 모두 메시지를 보낸다.
4) 메시지 받음 room 뷰 메시지를 받음
'프로젝트 > 채팅방(메신저)' 카테고리의 다른 글
메시지 읽음 표시 기능 만들기 (3) (0) | 2021.02.06 |
---|---|
메시지 읽음 표시 기능 만들기 (2) (0) | 2021.02.05 |
메시지 읽음 표시 기능 만들기 (1) (0) | 2021.02.05 |
스프링부트 다중 채팅방 만들기 (2) (0) | 2021.02.02 |
스프링부트 다중채팅방 만들기 (1) (0) | 2021.02.02 |