[Spring] 최종프로젝트 - withUs(실시간 채팅기능 - 1)

JunWoo An·2024년 1월 8일
0

스파르타코딩클럽

목록 보기
44/46
post-thumbnail

맡고 있던 로그인, 로그아웃기능을 비롯한 Spring Security 인증, 인가 로직 구현 후 withUs의 실시간 채팅 기능 구현을 진행하였다.

실시간 채팅기능은 앞선 수강한 강의나 프로젝트에서는 다뤄지지않는 기능으로 도전적인 과제였지만 클럽의 호스트와 게스트의 원활한 소통을 위해서는 구현되어야할 필수 기능으로 계획을 세웠다.우선 Spring으로 해당 채팅기능을 구현하기 위해서 조사한 결과 웹소켓에 대해서 선행 공부가 필수적이였다.

우선 어째서 웹소켓을 알아야 되는가에 대해 정리해보자면 우리가 비즈니스로직 구현으로 구현된 Http응답은 서버의 입장에서는 상당히 수동적인 응답이다.

위 그림처럼 Http는 비 연결성을 띄어 매 요청과 응답 구조의 반복에서는 연결되지 않고 그 과정에서 비용또한 발생하는 실로 연속성이 필요한 실시간 채팅기능에서는 가성비가 떨어지는 구조이다.
이에 웹소켓이라는 구조가 생겨났는데 웹소켓은 Http보다 더 가성비가 뛰어난 연결성있는 구조를 지원한다.

위 그림처럼 한번 연결이 된 따로 종료 요청이 올때까지 유지가 되며 양방향 통신을 지원한다.

웹 소켓의 로직을 살펴보면 웹소켓은 맨처음 연결을 할때에는 핸드쉐이크 요청을 하여 이떄 Http로 들어온 요청이 ws로 업그레이드되는데 다시 말하자면 기존 http://~의 요청이 ws://~로 바뀌게 된다. 이로서 두 대상은 연결이 되었다고 표현 할 수 있다. 통신을 종료할려면 Closing 핸드쉐이크를 반드시 요청하여 연결을 끊어야한다.

profile
도전하는 사람

0개의 댓글