본문 바로가기
CS

webSocket 넌 뭐냐(1)

by tccelestyn6248 2026. 3. 30.

오늘은 WebSocket에 대해 간단히 정리해보려고 합니다.

최근 진행 중인 프로젝트에서 WebSocket을 직접 사용하게 되면서, 이 기술이 왜 등장했고 어떤 상황에서 유용한지 한 번 정리해볼 필요성을 느끼게 되었습니다.
그래서 이번 글에서는 WebSocket의 개념부터, 기존 방식과의 차이, 그리고 실제 사용하면서 느낀 점까지 가볍게 풀어보려 합니다.

WebSocket은 왜 등장했을까?

먼저 WebSocket이 등장하게 된 배경부터 살펴보겠습니다.

초기의 인터넷은 지금처럼 복잡하지 않았습니다.
단순히 터미널 환경에서 텍스트를 주고받는 수준의 통신이 전부였죠.

이후 더 직관적이고 구조화된 통신을 위해 HTTP가 등장합니다.
HTTP는 흔히 **프로토콜(통신 규칙)**이라고 부르며, 웹의 기본이 되는 핵심 기술입니다.

HTTP의 등장으로 인터넷은 시각적으로, 그리고 정보 전달 측면에서 크게 발전하게 됩니다.
하지만 이 방식에도 분명한 한계가 존재했습니다.

  • 요청(Request)을 보내야만 응답(Response)을 받을 수 있다
  • 서버와의 상호작용이 페이지 이동 중심으로 이루어진다

쉽게 말하면, 사용자가 무언가를 해야만 서버와 통신이 시작되는 구조였던 겁니다.

AJAX의 등장

이러한 불편함을 개선하기 위해 등장한 것이 바로 AJAX입니다.

AJAX는 기존 HTTP의 구조를 유지하면서도,
페이지를 새로고침하지 않고 서버와 통신할 수 있도록 만든 기술입니다.

덕분에 웹은 다음과 같은 형태로 발전하게 됩니다.

  • 페이지 이동 없이 데이터 요청 가능
  • 필요한 부분만 업데이트 (DOM 변경)
  • 비동기 처리 가능

즉, 사용자 경험이 훨씬 부드러워졌습니다.

하지만 여전히 한 가지 한계가 남아 있었습니다.

여전히 요청을 보내야만 응답을 받을 수 있다는 점

서버가 먼저 데이터를 보내는 것은 불가능했습니다.

WebSocket의 등장

이 문제를 해결하기 위해 등장한 것이 바로 WebSocket입니다.

WebSocket은 한 번 연결이 이루어지면,
서버와 클라이언트가 서로 자유롭게 데이터를 주고받을 수 있는 양방향 통신을 제공합니다.

초기 연결(Handshake) 과정에서는 HTTP를 사용하지만,
연결이 완료된 이후에는 WebSocket 전용 프로토콜을 사용합니다.

예를 들어,

  • HTTP → http://example.com
  • WebSocket → ws://example.com

이처럼 프로토콜 자체가 달라집니다.

결과적으로 WebSocket은
“요청 → 응답” 구조가 아니라, 실시간 스트리밍에 가까운 통신 방식이라고 볼 수 있습니다.

WebSocket이 필요한 경우

WebSocket은 특히 다음과 같은 상황에서 강력한 장점을 가집니다.

  • 실시간 채팅, 화상 회의 등 실시간 양방향 통신이 필요한 경우
  • 많은 사용자가 동시에 접속하는 대규모 서비스
  • 주기적인 요청 없이 서버에서 즉시 데이터를 전달해야 하는 경우
  • TCP 기반의 지속적인 연결이 필요한 경우

WebSocket 서버 구현

WebSocket은 다양한 언어와 환경에서 구현할 수 있습니다.

  • Python: pywebsocket
  • PHP: phpwebsocket
  • Java: jWebSocket
  • Ruby: web-socket-ruby
  • Node.js: Socket.IO

Socket.io의 필요성

하지만 WebSocket은 HTML5의 기본으로 내장되어 있어 너무 오래된 버전의 브라우저는 지원하지않습니다.

이걸 해결하기 위해 사용하는것이 바로 Socket.io입니다.

 

Socket.io는 브라우저의 버전에 상관없이 WebSocket을 구현합니다

브라우저가 WebSocket을 지원한다면 WebSocket으로 연결하고, 

지원하지않는 오래된 브라우저라면 HTTP로 연결하여 WebSocket을 흉내냅니다.

WebSocket 사용 이유

초창기 인터넷은 위에서 언급했듯 단순한 데이터 열람 중심이었습니다.

이후 사용자 간 상호작용이 증가하며 HTTP와 AJAX가 등장했습니다.

하지만 여전히 브라우저 요청 기반의 단방향 통신 구조라는 한계가 존재했습니다.

이러한 문제를 해결하고 실시간 양방향 통신을 가능케하기 위해 webSocket이 등장했습니다.

사용이 어려운점

webSocket은 장점이 뛰어난만큼 단점 또한 명확합니다.

  1. 프로그램 구현에 보다 많은 복잡성 초래
  2. 서버와 클라이언트 간의 Socket 연결 유지 비용
  3. 오래된 버전의 웹 브라우저에선 지원하지 않음
  4. 서버와 클라이언트 간의 연결이 끊어졌을 경우의 에러 메시지가 구체적이지않음 

사용 예시

  • 페이스북 같은 SNS 어플리케이션
  • LOL 같은 멀티플레이어 게임들
  • 구글 Doc 같이 여러 명이 동시 접속해서 수정할 수 있는 Tool
  • 클릭 동향 분석 데이터 어플 (특정 시간동안 어느 사이트에 주로 접속했는지 등의 정보를 파악하는 어플)
  • 증권 거래 정보 사이트 및 어플
  • 스포츠 업데이트 정보 사이트 및 어플
  • 화상 채팅 어플
  • 위치 기반 어플
  • 온라인 교육 사이트 및 어플

이번 글은 webSocket의 역사, 사용 이유 등등을 알아봤습니다. 

다음 글에선 webSocket의 예시 코드를 보며 사용법을 알아보겠습니다.

'CS' 카테고리의 다른 글

webSocket 넌 뭐냐(2)  (0) 2026.03.31
비동기? 동기? 이게 다 뭐야?  (0) 2026.03.26