적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

웹 개발

웹 소켓 Web Socket

hongssup_ 2021. 5. 20. 15:10
반응형

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

728x90
반응형

'웹 개발' 카테고리의 다른 글

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