TIL

WebSocket 이전의 Client와 Server 간의 통신방법

하얀잔디 2022. 10. 24. 14:19

크게 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