728x90
1. 웹소켓이란?
- 웹소켓(WebSocket)은 하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜이다.
- Transport protocol의 일종, 웹 버전의 TCP 또는 Socket
- 서버와 클라이언트 간에 Socket Connection을 유지해서 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술
- Real-time web application구현을 위해 널리 사용되어지고 있다. (SNS어플리케이션, LoL같은 멀티플레이어 게임, 구글 Doc, 증권거래, 화상채팅 등)
- HTTP와 마찬가지로 OSI 제7계층에 속하며, 제4계층 TCP에 의존한다.
2. 사용하는 이유?
웹 어플리케이션에서 기존의 서버와 클라이언트 간의 통신은 대부분 HTTP를 통해 이루어 졌으며 HTTP는 Request/response기반의 Stateless protocol이다. 즉, 서버와 클라이언트 간의 Socket connection같은 영구적인 연결이 되어있지 않고 클라이언트 쪽에서 필요할 때 Request를 할 때만 서버가 Response를 하는 방식으로 통신이 진행되는 일방향 통신이다. 이럴 경우 서버 쪽 데이터가 업데이트 되더라도 클라이언트 쪽에는 화면은 Refresh하지 않는 한 변경된 데이터가 업데이트 되지 않는 문제가 발생한다.
이런 문제는 일반적인 웹 어플리케이션에선 기존의 있던 임시방편인 Long polling이라던가 Ajax를 사용해도 어느 정도 해결이 가능하지만 데이터의 빠른 업데이트가 중요한 어플리케이션에서는 실시간 업데이트가 필요하기 때문에 Web Socket이 사용되고 있다.
Web Socket은 Stateful protocol이기 때문에 클라이언트와 한 번 연결이 되면 계속 같은 라인을 사용해서 통신하기 때문에 HTTP 사용 시 필요 없이 발생되는 HTTP와 TCP연결 트래픽을 피할 수 있다. 마지막으로 Web Socket은 HTTP와 같은 포트(80)을 사용하기에 기업용 어플리케이션에 적용할 때 방화벽은 재설정 하지 않아도 되는 장점이 있다.
참고문헌
728x90
'Web' 카테고리의 다른 글
브라우저 렌더링의 Reflow와 Repaint, 그리고 렌더링 최적화 (0) | 2021.06.03 |
---|---|
렌더링과 Virtual DOM (0) | 2021.06.02 |
AJAX란? (0) | 2021.06.01 |
주소 창에 google.com을 검색하면? (브라우저가 웹 페이지를 표시하는 일련의 과정) (0) | 2021.06.01 |
Typescript with React - tsconfig.json (0) | 2021.05.31 |
댓글