FEInterview Prep

network · high priority

WebSockets

실시간 양방향 통신의 핵심

intermediate 난이도3시간토스카카오네이버당근라인
시작 전
이해도
매우 낮음

학습 개요

탄생 배경

쉬운 설명

복잡한 개념을 실생활 비유로 설명합니다.

전화 통화(WebSocket) vs SMS(HTTP)

HTTP는 문자 메시지처럼 매번 새 요청을 보내고 응답을 받아야 합니다. WebSocket은 전화처럼 한 번 연결하면 끊을 때까지 양쪽이 언제든 말할 수 있습니다. 채팅처럼 실시간으로 대화해야 한다면 전화(WebSocket)가 훨씬 효율적입니다.

핵심 개념

WebSocket 연결 수립 4단계

1
HTTP Upgrade 요청

클라이언트가 Upgrade: websocket 헤더를 포함한 HTTP GET 요청을 보냅니다.

2
101 Switching Protocols

서버가 101 상태 코드와 Sec-WebSocket-Accept 헤더로 응답하며 프로토콜 전환을 승인합니다.

3
TCP 연결 유지

HTTP 연결이 WebSocket 연결로 업그레이드되고, 연결이 닫힐 때까지 TCP 소켓을 유지합니다.

4
양방향 메시지

클라이언트와 서버가 프레임(frame) 단위로 언제든 자유롭게 메시지를 주고받습니다.

실무 적용

어떤 상황에서 사용하는가

실시간 채팅, 라이브 주식 시세, 멀티플레이어 게임, 협업 에디터 구현

어떻게 적용하는가

wss:// 프로토콜을 사용하고, 재연결 로직과 heartbeat(ping/pong)를 구현하며, 서버 스케일 아웃 시 Redis Pub/Sub로 인스턴스 간 메시지를 동기화합니다.

흔한 실수와 안티패턴

  • 재연결 로직을 구현하지 않아 네트워크 불안정 시 연결이 끊기는 문제
  • 서버 스케일 아웃 시 sticky session이 필요하거나 Redis Pub/Sub 미적용으로 메시지 유실
  • wss:// 대신 ws://를 사용해 보안 취약점 노출

면접 질문

기초토스카카오네이버

답변 방향 힌트

연결 방식, 방향성, 오버헤드 측면에서 비교하세요.

반드시 언급할 키워드

  • HTTP는 요청-응답 단방향
  • WebSocket은 Upgrade 후 양방향 지속 연결
  • HTTP는 매 요청마다 헤더 오버헤드
  • WebSocket은 초기 핸드셰이크 후 낮은 오버헤드

예상 꼬리 질문

  • WebSocket 연결이 끊겼을 때 어떻게 처리하시겠습니까?

학습 자료