본문 바로가기
개발공부/Java

Spring MVC에 웹소켓 집어넣기 2

by 맙소사 2021. 7. 29.

쓰는걸 잊고 있었다. 제 때 적어두면 시간대가 같이 남아있어서 언제 뭘 했는지 알 수 있어서 좋은데 제 때 기록하기는 쉽지 않은듯...

 

다중 채팅방을 구현하고 싶었기 때문에 Map<String, List>을 사용해서 세션을 나눠줬다.

 

웹소켓은 하나의 세션만 가지고 있기 때문에 접속하는 친구들에게 라벨을 붙여서 나눠주는 방식으로 구성했다.

key값에 해당하는 String은 방 번호를 집어넣었고, value값에 해당하는 List는 같은 방에 들어간 사람들로 구성된 리스트!

웹소켓 핸들러에서 대부분의 행동을 수행하게 되는데 핸들러가 상속받는 TextWebSocketHandler에서 제공해주는 세 개의 메서드에서 모두 세션을 구분해주어야 하기 때문에 상단 전역변수로 선언해주었다.

 

방에 접속하는것을 알리는 첫번째 메서드

 

방에 접속한 유저의 메시지를 클라이언트로 보내주는 메서드

 

그리고 마지막으로 접속을 종료하는것을 알리는 메서드

나머지는 대체로 원하는대로 구현이 됐는데 팀원이 나갔을 때는 오류가 안 나는데 방장이 나갔을 때는 오류가 난다 ㅠ 힝 ... try catch로 묶어놔서 멈추진 않는데 원하는 화면이 나오지 않아서 아쉬워... 천천히 계속 뜯어보는 수 밖엔 ,,, 

 

그리고 채팅창에 접속자의 목록을 띄워주어야 하는 것도 있는데 그건 첫 접속자의 경우 데이터베이스의 리스트를 끌고 오도록 했고, 기존 접속자의 경우는 입장하는 사람들의 메시지가 날아올 때 마다 화면단에 해당 유저 아이디를 가진 div가 존재하지 않을 경우 접속자 리스트 하단에 유저에 대한 정보 div를 append 했다. 물론 유저가 나가게 된다면 반대로 remove를 해줌!

 

'개발공부 > Java' 카테고리의 다른 글

자료구조 큐(QUEUE)  (0) 2022.02.10
Spring MVC에 웹소켓 집어넣기 3  (0) 2021.07.31
Spring MVC에 웹소켓 집어넣기 1  (0) 2021.07.15
Spring MVC  (0) 2021.07.15
maven google import 에러  (0) 2021.06.29

댓글