일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- HttpServletResponse
- 애너테이션
- HttpServletRequest
- 파이썬
- TDD강의
- 서블릿의 응답
- POST방식
- 튜플
- 서블릿
- Servlet
- 웹 애플리케이션
- annotation
- 내장함수
- 넥스트스탭
- 리스트
- get방식
- doHandle
- 자료형
- 배치
- 숫자형
- 오라클
- NextSTEP
- Python
- 톰캣
- 서블릿 생명주기
- 서블릿 동작 과정
- ORA-65096
- 딕셔너리
- 서블릿 계층구조
- 톰캣9
- Today
- Total
괴발개발 공부하는 블로그
websocket, SSE, polling, long polling, streaming 차이점 본문
websocket 뿐만 아니라 웹에서 실시간 통신을 구현하기 위해 polling, long polling, streaming 방식도 있다.
- websocket
1. 양방향 통신: 클라이언트 - 서버 간의 실시간 양방향 통신을 제공하는 프로토콜
2. 지속적인 연결: 클라이언트 - 서버 간의 지속적으로 데이터 주고받기 가능
3. 낮은 오버헤드: 연결을 유지하기 때문에 데이터를 주고 받을 때 네트워크 오버헤드가 낮다.
4. 실시간 업데이트: 변경 사항이 발생하면 즉각적인 업데이트가 가능하다.
실시간 양방향 통신이 필요할 경우 사용한다. 예를 들어 실시간 채팅, 실시간 협업 도구, 실시간 게임 등에 사용한다. 데이터의 실시간 전송과 즉각적인 업데이트가 필요한 경우 사용한다.
- server sent events
1. 단방향 통신: 서버에서 클라이언트로만 전송하는 단방향 통신 방식이다. 클라이언트는 서버로 데이터를 보낼 수 없다. 서버만이 클라이언트로 데이터를 푸시할 수 있다.
2. 웹 소켓은 웹 소켓 프로토콜을 사용하지만 SSE 는 HTTP 프로토콜을 사용한다. 클라이언트는 HTTP keep alive 연결 유지를 통해 서버에서 필요할 때마다 클라이언트에게 전송할 수 있도록 한다.
3. 웹 소켓은 텍스트와 JSON 같은 형식의 데이터도 전송 가능하지만, SSE 는 텍스트 기반 데이터를 전송한다.
4. 주식 시세 업데이트, 실시간 뉴스 피드, 알림 시스템 등 서버에서 클라이언트로 단방향 푸시 업데이트가 필요한 경우에 사용한다.
- polling
폴링은 실시간 통신이 아니라 주기적인 요청 - 응답 기반의 통신 방식이다.
1. 주기적인 요청: 클라이언트가 일정한 간격으로 서버에 요청을 보내고 서버는 그에 대한 응답으로 데이터를 전송한다.
2. 지속적인 요청: 클라이언트는 일정한 간격마다 주기적으로 서버에 데이터 요청을 보내야 한다.
3. 네트워크 부하 발생: 주기적인 요청으로 인해 네트워크 부하가 발생하고, 실시간 업데이트를 수신하는데 제한이 있을 수 있다.
실시간 업데이트보다 일정한 주기로 데이터를 가져오는 경우 사용한다. 데이터의 업데이트가 빈번하지 않고, 실시간성보다는 간격적인 업데이트를 수용할 수 있는 상황에 적합하다.
- long polling
1. 지속적인 응답 대기: 클라이언트가 서버에 요청을 보내면, 서버는 새로운 데이터가 도착할 때까지 응답을 지연시킨다.
2. 타임아웃 및 재요청: 클라이언트는 응답을 받으면 다시 요청을 보내야 한다. 서버는 타임아웃이나 연결끊김 상황에서 클라이언트의 재요청을 기다릴 수 있다.
3. 실시간 업데이트: 새로운 데이터가 도착하면 클라이언트는 즉시 응답을 받을 수 있으며, 실시간 업데이트를 수신할 수 있다.
폴링 방식에서 실시간 업데이트를 조금 더 효율적으로 처리하고자 할 때 사용한다. 서버가 새로운 데이터가 도착할 때까지 응답을 지연시키고 클라이언트는 데이터를 수신하는 즉시 다시 요청을 보내는 방식이다.
- streaming
1. 지속적인 데이터 스트림: 서버는 클라이언트에게 지속적인 데이터 스트림을 전송한다.
2. 대용량 데이터 처리: 대량의 데이터를 실시간으로 처리할 때 유용하다.
3. 실시간 업데이트: 데이터 스트림이 지속적으로 전송되므로 실시간 업데이트를 수신할 수 있다.
대량의 데이터를 실시간으로 처리하고 지속적으로 데이터를 전달해야할 때 사용한다. 예를 들어 영상 스트리밍, 오디오 스트리밍, 실시간 뉴스 등에 적합하다. 데이터를 지속적으로 수신하고 처리해야 하며, 실시간으로 업데이트가 필요한 경우 사용한다.
'프로젝트' 카테고리의 다른 글
실시간 통신을 위한 websocket 과 STOMP (0) | 2023.06.08 |
---|---|
웹 소켓과 tcp/ip 소켓의 차이점 (0) | 2023.06.07 |
cognito와 oauth2.0 (0) | 2023.05.24 |
프로젝트 인프라 구성 (0) | 2023.04.04 |
filter, interceptor, argument resolver 의 역할과 차이 (0) | 2023.03.06 |