서버가 클라이언트에게 이벤트를 보낼 수 있는 4가지 방법이 존재한다.
Polling
- 클라이언트가 http request를 서버로 계속 날려서 이벤트 내용을 전달받는 방식
- 가장 쉬운 방법이지만 클라이언트가 많아질 수록 과부하가 올 수 있음
- http 오버헤드 발생 가능성 존재
- ex : js에서 setTimeout이나 setInterval 등을 사용할 수 있음
오버헤드(over head)
: 처리 시간 및 메모리 등이 추가적으로 사용되는 현상
- 오버헤드가 있기에 정보 전송의 신뢰성을 높일 수 있고 안정적으로 운용을 가능케함
long-polling
- 서버 측에서 접속을 열어두는 시간을 길게하는 방식
- 일반 polling보다는 서버의 부담이 줄어들 수 있지만 다수의 클라이언트에게 동시에 이벤트가 발생될 경우 서버의 부담이 급증하게 됨
1. polling과 같이 클라이언트가 서버로 http request를 날림
2. 서버의 응답에 사용 가능한 데이터가 없으면 계속 기다림
3. 서버에서 해당 클라이언트로 전달할 이벤트가 있다면 그순간 response 메시지를 전달하면서 연결 종료
4. 곧바로 클라이언트 측에서 request를 다시 보내며 다음 이벤트를 기다림
Web Socket
- 양방향 통신
- http request를 통해 handshaking 과정이 이루어짐
- ws 프로토콜을 통해 웹소켓 포트에 접속해있는 모든 클라이언트에게 이벤트 방식으로 응답
- 기존의 80, 443 포트로 접속을 하기때문에 추가로 방화벽을 열지 않아도 됨
- 리얼 타임이 필요한 곳에 많이 사용
- 웹 소켓을 사용하는 예시 : 카카오톡 채팅, 주식, 실시간 차트 등
SSE(Server-Sent Event)
- web socket같이 양방향이 아닌 serverv -> client 단방향 통신
- 서버의 event나 message를 client로 push하는 작업에 유용
- 요청 시 ajax로 쉽게 이용 가능
- 알람을 줄 때 많이 사용
- SSE를 사용하는 예시 : 트위터 피드, 페북 친추 요청 등
'Server' 카테고리의 다른 글
Tomcat 안에 있는 각 폴더의 의미 (0) | 2024.11.04 |
---|---|
오토 스케일링(Auto Scaling)이란? (0) | 2024.02.13 |
[Apache] Proxy(Reverse Proxy / Forward Proxy)란? (2) | 2023.12.11 |
WAS와 웹 서버의 차이점 (0) | 2023.11.22 |