ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹소켓 이란
    Spring/WebSocket 2023. 9. 15. 14:06

    웹 소켓  이란


    웹소켓은 실시간, 양방향 통신을 가능하게 하는 웹 통신 프로토콜이다. 

     

    기존 HTTP 프로토콜은 Client 가 Server 에 요청을 보내고, Server 가 응답을 반환하는 단방향 통신만 가능했다.

    예를들어, 채팅 앱의 경우 Server 가 새로운 메세지를 즉시 Client 에게 알려야 하는데 HTTP 만으로는 어려움이 존재한다.

     

    웹소켓을 이용하면 Server 와 Client 가 하나의 오픈된 연결을 유지하게 되어 데이터를 즉시 전송할 수 있다.

     

     

     

    통신 과정


    통신 과정, 요청 헤더, 응답 헤더

     

    1. HTTP 요청 (HandShake 시작) : 클라이언트가 서버에 HTTP 요청을 보낸다. 이 때, 헤더에 Upgrade: websocket 정보가 포함되어 있다.

    2. HTTP 응답 (HandShake 완료) : 서버가 이 요청을 받아 Connection: Upgrade 와 같은 헤더로 응답한다. 이로써 둘 사이의 연결이 웹소켓으로 업그레이드 된다.

    3. Websocket Connection : 이 단계에서 실제 웹소켓 연결이 열린다. 클라이언트와 서버는 이 연결 통해 양방향으로 데이터를 주고 받을 수 있다.

    4. Data Transfer (Frame 전송) : 웹소켓 연결이 열린 상태에서는 양방향으로 '프레임' 단위로 데이터를 주고 받는다.

    5. Websocket Close : 클라이언트나 서버 중 하나가 연결을 닫으면 상대방에게 연결을 닫을 것임을 알리고 연결이 종료된다.

     

     

     

    장단점


    장점

    • 실시간 업데이트가 필요한 웹 앱에 최적화
    • 헤더 오버헤드가 작아 효율적인 통신 가능
    • 양방향 통신을 지원

     

    단점

    • 전통적인 방화벽과 프록시 설정에 의해 차단될 가능성 있음
    • 웹소켓을 지원하지 않는 서버나 브라우저의 한계
    • 웹소켓은 HTTP 와 다르게 상태를 유지(stateful) 하기 때문에 서버와 클라이언트는 연결을 항상 유지해야한다.
      • 부하 발생
      • 비정상적으로 연결이 끊어졌을 때 적절한 대응 필요
    • 프로그램 구현에 보다 많은 복잡성을 초래할 가능성이 있다.
Designed by Tistory.