✔️ Socket
Socket 통신이란?
- 클라이언트와 서버가 특정 포트를 통해 양방향 통신을 하는 방식
- 데이터 전달 후 계속해서 연결을 유지하도록 하여 HTTP에 비해 더 많은 리소스를 소모하게 됨
- 그러므로 클라이언트와 서버가 실시간으로 계속해서 데이터를 주고 받아야 하는 경우에 사용
- 또는 실시간 동영상 스트리밍이나 온라인 게임 등에 사용
WebSocket이란?
- 웹 페이지의 한계에서 벗어나 실시간으로 상호작용하는 웹 서비스를 만드는 표준 기술
- 실시간 웹을 구현하기 위해서는 양방향 통신이 가능해야 하는데,
WebSocket 이전에는 Polling, Streaming 방식의 AJAX 코드를 이용하여 이를 구현하였으나
각 브라우저마다 구현 방법이 달라 개발이 어려운 문제점이 있어 이를 위해 WebSocket이 탄생 - HTTP Request를 통해 handshaking 과정을 거쳐 접속이 이루어지게 되므로
추가로 방화벽을 열지 않도록 양방향 통신이 가능하며 CORS 적용이나 인증 등의 과정도 기존과 동일하게 사용할 수 있음 - 이를 통해 자유롭게 데이터를 주고 받을 수 있으며 기존의 요청-응답 관계 방식보다 더 쉽게 데이터를 교환할 수 있게 됨
Socket.io란?
- 다양한 방식의 실시간 웹 기술을 손쉽게 사용할 수 있는 모듈
- 웹 클라이언트로의 푸시를 지원
- WebSocker, FlashSocket, AJAX Long Polling, AJAX Multi part Streaming, IFrame, JSON Polling 등
다양한 방법을 하나의 API로 추상화하여 JavaScript를 이용해 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 한 기술 - 브라우저 모델과 버전에 따라서 다양한 방법으로 내부적으로 푸시 메시지를 보내주게 되므로
WebSocket을 지원하지 않는 어느 브라우저라도 푸시 메시지를 일관된 모듈로 보낼 수 있게 됨
'Tech Interview > Network' 카테고리의 다른 글
[Network] 로드 밸런싱 (0) | 2024.01.27 |
---|---|
[Network] 암호화 (0) | 2024.01.27 |
[Network] Stateful과 Stateless (0) | 2024.01.24 |
[Network] REST (0) | 2024.01.24 |
[Network] 웹 통신의 큰 흐름 (0) | 2024.01.24 |