99클럽 19일차 TIL: WebSocket

2024. 4. 22. 16:4199클럽/TIL

728x90
반응형

#1. 오늘의 학습 키워드

자바 Spring 에서의 WebSocket 에 대해서

  • 저번 post 에서 HTTP 2 방식으로 통신을 하여 양방향 통신을 지원하는 gRPC 에 대해서 알아보았다.
  • 또한 채팅 등 실시간 서비스에 적합한 Spring Webflux 에 대해서 알아보았다.
  • 이 두 가지의 특징을 살펴보면, 익숙한 또 다른 기술이 떠오른다
    • WebSocket

#2. 공부한 내용

  • WebSocket
    • 웹 소켓
    • 웹 소캣은 서버와 클라이언트 사이의 인터액티브 통신 세션을 설정하여 언제든 양방향 통신 및 데이터 전송을 가능하케 하는 기술이다
    • 보통 채팅, 증권 거래, sns 등 서비스에서 많이 쓰이고 있다.
      • 채팅 서비스를 구현 할 때 기존 rest API 방식을 사용하게 되면, 클라이언트에서 매번 서버로 HTTP 통신으로 request 를 보내야 하는데, 이는 비효율적인 방식이다.
  • WebSocket특징
    • HTTP 및 WebSocket Connect
      • 최초 연결은 HTTP 를 통해 이뤄짐
        • Hankshake
      • 그 후 지속적인 연결은 Stateful Protocol을 사용하는 WebSocket Connection 을 통해 유지가 됨
        • 매번 메시지를 전송할 때마다 새롭게 연결을 맺을 필요가 없다.
        • Connection 유지 비용에 의하여, 트래픽이 많을 경우 서버에 부담이 될 수 있다.
          • → 연결이 끊길 경우에 대한 고려를 해야한다.
        • Connection 유지에 의하여, 서버의 변경 사항이 클라이언트에 실시간으로 적용된다.
    • 평문메시지(Plaintext) 전송 방식
      • 데이터 탈취를 방지하려면, SSL / TLS 보안 계층으로 메시지를 암호화해야 한다.
  • Spring 에서의 WebSocket 적용 순서 (추후 디테일하게 다뤄보겠다)
    1. Configuration 작성
    2. WebSocketHandler 구현
    3. afterConnectionEstablished() 메서드 구현
    4. handleTextMessage() 메서드 구현
    5. handleTransportError() 메서드 구현 (선택 사항)
    6. afterConnectionClosed() 메서드 구현 (선택 사항)


#3. 오늘의 회고

  • 정리를 하자면, WebSocket 은 실시간 양방향 통신을 구현해, 클라이언트와 서버 간 지속적인 연결을 구축하여 실시간 데이터 전송 및 수신을 가능케한다.
    • 아래와 같은 이점이 있다.
      • 실시간 양방향 통신
      • 낮은 지연시간 (Http 연결 재사용)
      • 효율적인 통신 (Http 헤더 X)
728x90
반응형

'99클럽 > TIL' 카테고리의 다른 글

99클럽 21일차 TIL: Validation Group  (0) 2024.04.24
99클럽 20일차 TIL: SOLID  (0) 2024.04.23
99클럽 18일차 TIL: gRPC  (0) 2024.04.21
99클럽 17일차 TIL: Spring Webflux: Mono, Flux  (2) 2024.04.20
99클럽 16일차 TIL: Spring Webflux  (0) 2024.04.19