본문 바로가기

dev/스프링

Spring WebSocketSession

스프링에서 웹 소켓을 사용할 때 broadcast 방식을 사용하는 경우가 많습니다.

 

broadcast 방식이란 현재 서버에 접속한 모든 클라이언트에게 메시지를 전달하는 것을 뜻합니다.

 

하지만 특정 클라이언트에게 메시지를 전달해야 하는 경우 WebSocketSession을 사용해야 합니다.

 

예제 코드

 

예제 코드를 설명하게 되면

 

클라이언트의 웹 소켓 세션을 저장하는 sessionList를 생성합니다.(19라인)

 

클라이언트가 웹 소켓 서버에 접속한 경우 sessionList에 추가합니다.(21~25라인)

 

클라이언트가 웹 소켓으로 서버에 메시지를 보낸 경우, 송신한 클라이언트에게만 메시지를 다시 전송합니다.(27~44라인)

 

클라이언트의 웹 소켓 접속이 끊긴 경우 해당 클라이언트의 세션을 sessionList에서 제거합니다.(46~50라인)

 

쉽게 생각하면 클라이언트가 보낸 메시지를 웹 소켓으로 에코 메시지를 받는 구조로 생각하면 됩니다.

 

웹 소켓 접속 웹 화면

 

웹 소켓 접속 로그

 

크롬 브라우저와 엣지 브라우저 두 개의 클라이언트가 웹 소켓으로 접속한 것을 확인할 수 있습니다.

 

웹 소켓 메시지 확인

 

웹 소켓 송신 로그

 

위의 로그를 보게 되면 메시지를 보낸 크롬 브라우저의 클라이언트에만 에코 메시지가 전달된 것을 확인할 수 있습니다.

 

일반적인 웹 소켓 세션 아이디 말고 사용자 아이디가 필요한 경우

 

session.getPrincipal().getName();

 

코드를 통해서 확인할 수 있습니다.

'dev > 스프링' 카테고리의 다른 글

Spring Boot Session Store Type JDBC  (0) 2023.11.27
Spring Boot OAuth2 로그인  (0) 2023.11.14
Spring Boot Jasypt  (0) 2023.08.14
Spring Naver Editor 이미지 업로드  (0) 2023.06.28
Spring Boot Logback  (0) 2023.06.21