1. 양방향 통신 (Full-Duplex)
- 데이터 송수신을 동시에 처리할 수 잇는 통신 방법
- 클라이언트와 서버가 서로에게 원할 때 데이터를 주고 받을 수 있다.
- 통상적인 HTTP 통신은 클라이언트가 요텅을 보내는 경우에만 서버가 응답하는 단방향 통신
2. 실시간 네트워킹 (Real Time-Networking)
- 웹 환경에서 연속된 데이터를 빠르게 노출
- ex) 채팅, 주식, 비디오 데이터
- 여러 단말기에 빠르게 데이터를 교환
3. 기존 웹 브라우저에서의 양방향 통신
- Polling : 클라이언트에서 일정 주기마다 요청을 보내고 서버는 현재 상태를 바로 응답하는 방식.
실시간으로 반영되는 것이 중요한 서비스에서는 좋지 않고, 서버에서 변화가 없더라도 매 요청마다 응답을 내려주기 때문에 불필요한 트래픽이 발생.
- Long Polling : 클라이언트에서 요청을 보내고 서버에서는 이벤트가 발생했을 때 응답을 내려주고 클라이언트가 응답을 받으면 다시 요청을 보내는 방식.
실시간 반응이 가능하고 polling에 비해 불필요한 트래픽은 유발하지 않지만 이벤트가 잦다면 과부하가 걸릴 수 있음.
- Streaming : 클라이언트에서 요청을 보내고 이벤트 발생 시, 계속 연결을 유지하여 끊임없이 데이터를 수신하는 방식.
Long Polling에 비해 응답마다 다시 요청을 하지 않아도 되므로 효율적이지만, 클라이언트에서 서버로의 데이터 송신이 어렵다.
=> 위 방법들은 HTTP를 통해 통신하기 때문에 빠르게 Request, Response 데이터를 주고받기에는 무리가 있다.
WebSocket
: 웹 서버와 웹 브라우저간 실시간 양방향 통신 환경을 제공해주는 실시간 통신 기술.
양방향으로 원할 때 요청을 보낼 수 있으며 stateless한 HTTP에 비해 오버헤드가 적어 유용하게 사용할 수 있다.
socket.io
: websocket과 같이 클라이언트와 서버의 양방향 통신을 가능하게 해주는 모듈. socket.io는 통신을 시작할 때, 각 브라우저에 대해서 websocket, polling, streaming, flash socket 등에서 가장 적절한 방법을 찾아 메시지를 보내줌. 덕분에 socket.io를 통해 개발을 하면 websocket이 지원이 되지 않는 브라우저에서도 메시지를 양방향으로 주고 받을 수 있다.
참고 : 우아한Tech youtube, blog
'웹 개발' 카테고리의 다른 글
CSRF token mismatch (0) | 2021.09.16 |
---|---|
HTML (0) | 2021.09.03 |
웹 서버 vs. WAS (0) | 2021.05.20 |
웹 Back-End 개발 [JAVA vs. PHP] (0) | 2021.05.14 |
웹 Front-End 개발 [HTML / CSS / JavaScript] (0) | 2021.05.14 |