본문 바로가기
Computer Science/ETC

웹 소켓 과 HTTP 실시간 통신에 대해 (polling, long polling, stream, web socket)

by dev_윤환 2023. 10. 29.

 HTTP 프로토콜을 이용한 통신 방식

HTTP를 이용한 실시간 통신 방식으로는 4가지가 있다.

  1. POLLING(폴링) 방식
  2. LONG POLLING(롱 폴링) 방식
  3. STREAMING (스트리밍) 방식
  4. WEB SOCKET(웹 소켓 방식)

1. Polling 방식

출처 : https://velog.io/@jodheeee/Javascript-Polling

http 통신은 L4 tcp/ip handshake연결후 http프로토콜 형식으로 데이터를 주고 받는다.

보통 우리가 웹페이지에서 데이터를 주고 받을 때,
http프로토콜에 맞게 브라우져(클라이언트)가 HTTP 요청(request)을 하고

요청을 받은 서버는 해당 요청에 맞는 데이터를 가공하고
http 형식에 맞게 데이터를 담아  응답(response) 한다.
그리고 요청 응답이 끝나면 연결이 끝난다. (stateless)

 

Polling 방식의 실시간 통신은 클라이언트가  일정주기의 시간 간격을 두고 클라이언트에서
매번 HTTP 연결한 후 request요청을 하고 업데이트할 정보가 있으면
서버가 해당 정보를 response응답해주는 방식이다.

 

특징
- 매 시간 주기로 http연결하는 비용이 발생한다. (불필요한 연결비용이 생기므로 네트워크 부하에 영향을 끼친다.)

- 시간 주기를 어떻게 잡냐에 따라 네트워크 부하가 야기 된다.

 

2. Long Polling 방식

출처 : https://medium.com/vuno-sw-dev/web-application%EC%97%90%EC%84%9C-server-to-client%ED%86%B5%EC%8B%A0-5c82e01a9456

long polling 방식의 실시간 통신은 polling방식을 보완한 방식으로,


클라이언트에서 http요청을 하면 서버에서 해당요청을 바로 응답하는 것이 아닌
서버에서 해당 요청에 대한 이벤트가 발생할 때까지 대기하다가 이벤트가 발생하면 데이터를  담아 보내고
다시 redirect 요청해 이벤트 발생까지 대기하기를 반복하는 방식이다.

 

특징

-  polling방식에 비해 http연결 비용이 줄어든다.

- 다수의 클라이언트와 연결된 이벤트 업데이트할 경우, 여러 클라이언트에 맞게 많은양의 데이터를 처리해줘야되므로
  서버에 부하가 올 수 있다.


3. Streaming 방식

streaming 방식은 http 연결후 클라이언트가 request요청을 보내면 long polling 방식처럼
이벤트가 발생하기 전까지 대기하고 이벤트가 발생하면 response로 응답해주는 데,
여기서 응답을 완료시키지 않고 응답을 기다린다. 그리고는 다음 이벤트가 발생하기 전까지 대기하고 있는 방식이다.

 

특징

- 클라이언트가 정보를 보낼 때는 초기 request요청일 경우 밖에 없으므로 서버에 정보를 보내기가 어렵다.

 

 

4. Web Socket 방식

출처 : https://doozi0316.tistory.com/entry/WebSocket%EC%9D%B4%EB%9E%80-%EA%B0%9C%EB%85%90%EA%B3%BC-%EB%8F%99%EC%9E%91-%EA%B3%BC%EC%A0%95-socketio-Polling-Streaming

websocket 방식은 http프로토콜을 이용하여 http handshake를 하여

기존 http프로토콜에서 ws(websocket)프로토콜로 업그래이드한다.

 

websocket방식은 앞선 3개의 방식과 달리 새로운 프로토콜 연결을 만들어 동시에 데이터를 받고 전송할 수 있는 

전이중 방식(full-duplex, 동시 송수신)이다.


(앞선 3개의 방식은 반이중 half-duplex. 무전기 통화를 생각하면 이해 good. 동시에 송신 혹은 수신 둘 중 하나만 가능 )

특징

- 바이트 스트림, 텍스트스트림 방식 전송이 가능하다.
- statefull 하다.
- https와 같이 ws -> wss로 인증서를 추가해서 사용할 수 있다.

- 웹서버의 포트를 사용할 수 있다.

 

 

참고 블로그 및 사이트
https://ws-pace.tistory.com/104

'Computer Science > ETC' 카테고리의 다른 글

CSRF란? (cross site request forgery)  (0) 2023.09.14