LumoMate
LumoMate/용어집/SurfaceWeb

웹소켓

WebSocket은 서버와 클라이언트가 연결을 한 번 열고, 그 위에서 양방향으로 자유롭게 메시지를 주고받는 통신 방식입니다. 실시간 채팅·게임·알림에 자주 쓰입니다.
웹소켓의 개념을 표현한 편집형 일러스트.

쉬운 설명

보통의 HTTP는 클라이언트가 묻고 서버가 답하면 끝나는 일회성 대화입니다. 서버가 먼저 '새 메시지 왔어요!'라고 말을 걸 수 없어서, 채팅 앱은 옛날에 1초마다 '새 메시지 있어요?'를 계속 묻는 식으로 동작했습니다(폴링). 비효율적이었습니다.

WebSocket은 한 번 연결을 열어 두면 양쪽 다 언제든 메시지를 보낼 수 있게 해 줍니다. 서버에 새 메시지가 도착하는 순간 즉시 클라이언트에 밀어 줄 수 있고, 클라이언트는 입력이 발생하는 즉시 서버로 보낼 수 있습니다. 연결 비용도 한 번 치르고 끝입니다.

동작은 두 단계입니다. ① 핸드셰이크: 클라이언트가 'WebSocket으로 통신하자'고 HTTP로 요청하고, 서버가 동의하면 같은 연결을 WebSocket으로 '업그레이드'합니다. ② 그 뒤로는 같은 TCP 연결 위에서 텍스트·바이너리 메시지를 양방향으로 주고받습니다. 연결이 끊기면 클라이언트가 다시 연결을 시도하는 게 보통입니다.

실시간이 중요한 곳에 자연스러운 선택지입니다: 채팅, 멀티플레이어 게임, 주식 시세 화면, 실시간 협업 도구(Figma·구글 문서 같은 커서 공유), 라이브 알림(주문 상태·배달 위치), IoT 기기 제어. 한 번 연결을 열어 두는 모델이라 짧은 단발 메시지에는 일반 HTTP보다 훨씬 효율적입니다.

주의할 점: 모바일 환경에선 네트워크가 자주 끊겨 재연결·메시지 큐를 처음부터 신경 써야 합니다. 또 한 서버에 동시에 열릴 수 있는 연결 수에 한계가 있어 대규모로 운영하려면 전용 인프라(Socket.io·SignalR·Phoenix Channels·AWS API Gateway WebSockets 같은 서비스)가 필요합니다. 최근에는 비슷한 효과를 더 가볍게 내는 SSE(Server-Sent Events)도 옵션으로 자리잡았습니다.

웹소켓의 개념을 본문 안에서 다른 각도로 비춰 보는 편집형 일러스트.
FIG. 1웹소켓을 다른 각도에서 다시 봅니다.

비유로 보면

HTTP가 편지를 주고받는 식이라면 WebSocket은 전화통화에 가깝습니다. 한 번 통화를 시작하면 양쪽이 자유롭게 말하고 들을 수 있습니다. 끊기 전까지는 매번 새로 다이얼을 누르지 않아도 됩니다.

어디에서 만나나

채팅 앱, 멀티플레이어 온라인 게임, 실시간 협업 도구(노션·피그마의 커서 공유, 구글 문서), 주식·암호화폐 거래소의 시세 화면, 배달·차량 호출 앱의 실시간 위치 추적, 라이브 스트리밍의 채팅·하트, 모니터링 대시보드의 실시간 지표.

작은 예시

카카오톡으로 친구가 메시지를 보낸 순간 화면 상단에 '띵' 하고 알림이 즉시 뜨고, 답장을 입력하면 상대 화면에 '입력 중...'이 나타납니다. 이런 양방향 실시간성이 WebSocket(또는 그와 비슷한 기술)이 깔려 있을 때 가능한 일입니다.

자주 하는 오해

오해
흔한 오해 둘. ① 'WebSocket이면 무조건 빠르다' — 한 번 연결을 유지하는 비용이 있어, 메시지가 드물게 오가는 경우엔 일반 HTTP가 더 가볍습니다. ② '브라우저에서만 쓴다' — 서버 간 통신·IoT·게임 등 다양한 곳에서 같은 프로토콜을 씁니다.

한 줄 정리

WebSocket의 가치는 '서버가 먼저 말할 수 있다'에 있습니다. 실시간성이 사용자 경험의 핵심이라면 가장 자연스러운 선택지입니다.
매주 월요일 오전 8시

한 주에 한 통,
오래 남는 이해를 보냅니다.

흘려보내지 않는 글만 골라 보내드립니다. 광고와 추적, 외부로 빠지는 미끼 링크 없이 메일 안에서 끝나는 한 통입니다.

언제든 한 번의 클릭으로 해지할 수 있습니다. 스팸은 보내지 않습니다.