hayu's 개발 일지

[TIL]240401 Websocket(웹소켓) 본문

프레임워크/spring

[TIL]240401 Websocket(웹소켓)

hayu00 2024. 4. 1. 21:37

websocket

  • HTML5 표준 기술로, 클라이언트와 서버 간의 양방향 통신을 열고, 실시간으로 데이터를 교환하는 방식이다.
    • 단방향 통신 : TV, 라디오
  • 지연 시간이 낮고 효율적이다.
  • 단일 TCP 연결을 유지하기 때문에 메모리 및 네트워크 사용이 효율적이다.
    • open connection 을 유지해줘야 하기 때문에 따로 chat server 를 만들어서 관리한다.

웹소켓의 동작 방식

  • 웹소켓은 양방향 통신이기 때문에 연속적인 데이터 전송의 신뢰성 보장을 위해 Handshake 과정을 진행한다.
  • 기존의 다른 TCP 기반의 프로토콜은 TCP layer에서의 Handshake를 통해 연결을 수립하는 반면, 웹소켓은 HTTP 요청 기반으로 Handshake과정을 거쳐 연결을 수립한다.
  • Handshake 과정을 통해 연결이 수립되면 응용 프로그램 계층 프로토콜이 HTTP에서 웹소켓으로 업그레이드된다.

→ 업그레이드가 되면 웹소켓 연결이 닫힐 때 까지 웹소켓 프로토콜을 사용하여 데이터를 주고 받는다. (새로고침이나 창 닫기 등의 이벤트 발생 시 닫힌다. )

메세지 큐(message queue)

  • Kafka, RabbitMQ
  • 서비스들 간에 데이터를 주고 받는 방법중 하나이다.
  • 메세지 큐를 사용하면 비동기적으로 데이터 처리가 가능하다.

장점

  • 결합도를 낮춘다. (안정성, 유연성 ⬆️)

1:1 채팅

 

 

참고 자료

- https://tecoble.techcourse.co.kr/post/2021-08-14-web-socket/

- https://www.youtube.com/watch?app=desktop&v=VODXNECZOBQ

- https://velog.io/@hongjunland/Spring-Boot-Spring-Boot-React-STOMP%EC%9D%84-%ED%86%B5%ED%95%9C-%EC%9B%B9%EC%86%8C%EC%BC%93-%EB%B0%A9%EC%8B%9D-%EC%B1%84%ED%8C%85-%ED%81%B4%EB%A6%B0%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98

- https://dev-gorany.tistory.com/212