실제 코드로 작성된 내용을 설명하기전에 코드 흐름(진행순서)를 소개합니다.

 

    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 뷰          메시지를 받음

+ Recent posts