skarltjr / Memory_Write_Record

나의 모든 학습 기록
0 stars 0 forks source link

서버-클라이언트 push pull #111

Open skarltjr opened 2 years ago

skarltjr commented 2 years ago

개요

- 웹 애플리케이션은 기본적으로 client - server 모델을 기반으로 만들어졌다.
- 기존에는 새로운 요청을 보내는 쪽은 클라이언트였기 때문에 서버에서 클라이언트에게 먼저 보낼 방법이 없었다.
- 이를 위해 등장한 방식이 push방식이다.

- push란 서버에서 클라이언트에게 정보를 먼저 보내주는 방식 / 실시간 사용자와의 상호작용에 효과적
- pull클라이언트가 서버로부터 원하는 정보를 계속 요청하는 방식

- http에서는 클라이언트가 서버에게 요청을하고 이에대한 응답을 받으면 연결이끊어진다.
- http에서는 지속적인 연결이 불가능하고 이를 보완하는 방법이 comet(push)

comet

실시간 push를 위해서 필요한 지속적인 연결을 가능하게 만드는 방법
polling, long-polling, streaming

1. polling
- 주기적으로 클라이언트가 서버에 요청해 변경사항을 확인
- 다만 요청 주기가 짧아지면 서버의 부하가 증가

2. long-polling
- Polling방식에서 응답을 의도적으로 늦게 전달받는 방법
- 응답을 늦게 전달받음으로써 그 시간안에 추가적인 변경사항이 더 있을 때 다시 요청을 보내 업데이트본을 받아오도록한다.
- 다만 이또한 실시간 푸시가 많은 구조일수록 서버에게 전달되는 부하가 증가한다
- 만약 실시간 메세지 전달이 중요하지만 변경이 적은 구조에 용이

3. streaming
- 클라이언트가 서버와 연결을 하면 이 후 응답완료 신호를 보내지 않고 지속적으로 연결을 유지하는 상태
- 이후 업데이트가 있으면 서버는 클라이언트에게 정보 push
- 한 번 연결되면 연결이 끊기지 않아 재연결 부하가없다
- 다만 연결의 유효성 관리 부담, 지원하는 브라우저가 적은 등 문제가 존재