Web Socket

류기탁·2022년 1월 15일
0

Web

목록 보기
1/2

하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜.
서버와 클라이언트 간에 Socket Connection을 유지해서 언제든 양방향 통신 또는 데이터 통신이 가능하도록 하는 기술이다.

Web Socket, 왜 등장했는가.

HTTP 프로토콜

기존 방식의 단점 보안
기존 Client - Server 통신은 HTTP를 통해 이루어졌다. HTTP는 요청(Request) 과 응답(Response)기반의 Stateless protocol이다. 다시 말해, Client와 Server간에 영구적인 연결이 되어 있지않고, 클라이언트 쪽에서 필요할 때 요청(Request)를 하고 서버가 응답(Response)하는 한방향 통신이다.
이 경우에는, 서버 쪽 데이터가 바뀌어도 클라이언트에서 Refresh등을 하지 않는한 데이터가 업데이트 되지 않는다.

HTTP 단점을 해결하기 위한 다른 방법들

위의 단점을 해결하기 위한 방법 들

    1. Polling
      주기적으로 서버에 요청을해서 받을 것이 있는지 확인하는 방법이다. 이것이 바로 단점이 된다. 서버 측에서 바뀐 것이나 보낼 내용이 없어도 클라이언트에서는 계속 Request를 보내야한다. 계속된 연결과 해제는 handshake(통신 전 조정 과정)가 필요하기 때문에 서버에 부담이 된다.
    1. Long Polling
      요청에 응답을 바로 하지 않고, 이벤트 발생시에 응답하는 방법이다. 클라이언트는 pending상태로 대기 핟고 있다가 응답이 오면 다시 연결하는 것을 반복한다.
    1. Streaming
      클라이언트가 Request를 보내면 Connection을 하고 유지하며 서버가 데이터를 보내는 방식.
    1. Ajax (Asynchronous Javascript And XML)
      자바스크립트를 이용해서 서버와 클라이언트(브라우저)가 비동기 방식으로 데이터를 교환 하는 기법. 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고 일부만 데이터를 로드한다.

HTTP 통신 방법과 WebSocket의 차이

  • 프로토콜
    WebSocket은 접속 확립에 HTTP를 사용하지만 그 후 WebSocket 독자의 프로토콜로 이루어 진다. WebSocket은 header가 상당히 작아 overhead가 적은 특징이 있다. 장시간 접속을 전제로 하기 때문에, 접속한 상태로 하나의 커넥션으로 C/S(Client/Server)간 통신이 가능하다.

WebSocket이란

Transport Protocol의 일종으로 C/S 간 양방향 통신을 실현하기 위한 구조이다. 단순한 API로 구성되어 있으며, 웹소켓을 이용하면 하나의 HTTP 접속으로 통신을 주고 받을 수 있다. 채팅, 게임, 실시간 차트의 프로그램 등을 효과적으로 구현할 수 있다.

원리

서버와 클라이언트간의 HTTP프로토콜을 통해 웹소켓을 연결한다. TCP/IP기반 으로 일정 시간이 지나면 HTTP연결은 자동으로 끊어진다. 기본적으로 웹소켓 API는 간단한 기능만 제공해서 SockJS나 Socket.io같은 오픈 소스 라이브러리를 많이 사용한다. 메시지 또한 STOMP같은 프로토콜을 사용한다.

WebSocket 사용하는 이유

위 배경에서 웹소켓이 나오기 이전에는 모두 클라이언트의 요청이 없다면, 서버로부터 응답을 받을 수 없는 구조였다. WebSocket은 C/S 간 양방향 소통이 하다. 유저는 바로바로 바뀐 데이터를 볼 수 있다. 이러한 이유로 실시간이 요구되는 응용프로그램의 개발을 WebSocket을 통해 효과적으로 구현할 수 있다.

문제점

  1. 구현이 복잡하다. (오류가 났을 때 복잡해진다.)
  2. Socket 연결의 비용이 높다.
  3. 오래된 버전의 웹 브라우저에서는 지원하지 않는다.
profile
오늘도 행복한 하루!

0개의 댓글