괴발개발 공부하는 블로그

websocket, SSE, polling, long polling, streaming 차이점 본문

프로젝트

websocket, SSE, polling, long polling, streaming 차이점

ompeom 2023. 8. 30. 17:19

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. 실시간 업데이트: 데이터 스트림이 지속적으로 전송되므로 실시간 업데이트를 수신할 수 있다.

대량의 데이터를 실시간으로 처리하고 지속적으로 데이터를 전달해야할 때 사용한다. 예를 들어 영상 스트리밍, 오디오 스트리밍, 실시간 뉴스 등에 적합하다. 데이터를 지속적으로 수신하고 처리해야 하며, 실시간으로 업데이트가 필요한 경우 사용한다.

 

Comments