크게 3가지 방법이 있었다.
Polling :
특정 주기를 가지고 서버에 http request를 하는 방식임.
언제 통신이 발생할 지 예측이 불가능 -> 평범한 request를 일정 주기로 서버에 요청하는것.
단점 : 클라이어트가 많아지면 서버 부담이 급증함.
+ 완전 실시간정도의 빠른 응답을 기대하기 어려움
Long Polling :
비슷하나 실시간으로 데이터 처리할 수 있는 방식임.
클라에서 서버로 일단 http 요청을 보내고, 계속 기다리다가 ,
서버에서 해당 클라로 전달할 이벤트가 있다면, 그 순간 response 메세지를 전달하며 연결이 종료됨.
해당 작업이 완료된 후에는 클라에서 바로 http 요청을 보내 다음 이벤트를 기다림.
일반 polling 보다는 서버의 부담이 줄어든다는 장점이 있지만 ( 계속 안 보내니까)
클라에게 동시에 많은 양의 메세지가 올경우 위에 polling과 큰 차이가 없음.
다수의 클라이언트에게 동시에 이벤트가 발생할 경우 -> 곧바로 그 클라들이 서버로 재접속을 시도하게 되므로, 서버의 부담이 급증함.
Streaming
일반적인 TCP Connection과 비슷함. 클라<-> 서버 연결 통로로 데이터를 보냄.
Long Polling 과 마찬가지로, 처음에는 클라에서 서버로 http 요청을 보냄.
서버에서 클라로 이벤트를 전달할 때, 해당 요청을 끊지 않고 필요한 메세지만 보내기를 반복하는 방식임.
세 가지 단점
-> 모두 Http 통신함. 불필요하게 Header가 크다.
Long Polling 과 Streaming 방식의 경우 , 서버 -> 클라로 메세지 보낼 수 있지만 반대로 클라 -> 서버로 메세지를 보내는건 조금 어렵다.
따라서 별 어려움 없이 통신이 가능하도록 HTML5 표준의 일부로 WebSocket이 만들어 진 것이다.,
'TIL' 카테고리의 다른 글
Spring Security Form 인증 과정 (0) | 2022.10.26 |
---|---|
CORS란 (0) | 2022.10.25 |
parallelStream() (0) | 2022.10.20 |
LinkedHashMap 이란 (0) | 2022.10.20 |
Cross Join 용도 (0) | 2022.10.19 |