Skip to content

웹소켓이 뭐나면

1. 웹소켓의 등장 배경

코딩애플

  • 전통적인 HTTP 통신은 마치 선톡을 하지 않는 소개팅녀와의 문자메시지와 같다.
  • 소개팅녀가 선톡을 하게 하는 방법 두가지가 등장하였는데 각각 SSEServer Sent EventWeb Socket 이다.
  • SSE는 라디오와 같다. 양방향 통신이 불가능하다.
  • 반면 Web Socket은 전화와 같다. 양방향 통신이 가능하다.

2. 웹소켓 개요 with References

mozilia dev - 『개발자를 위한 웹 기술 > 웹 소켓』

웹 소켓은 사용자의 브라우저와 서버 사이의 ==인터액티브 통신 세션==을 설정할 수 있게 하는 고급 기술입니다. 개발자는 웹 소켓 API를 통해 서버로 메시지를 보내고 서버의 응답을 위해 서버를 폴링하지 않고도 이벤트 중심 응답을 받는 것이 가능합니다.

wikipedia - 『웹소켓』

WebSocket은 하나의 TCP Connection 에 full-duplex 커뮤니테이션을 지원하는 통신 프로토콜이다.

WebSocketHTTP와 다르다. 두 프로토콜 모두 OSI 모델의 응용계층 (layer 7)의 프로토콜이며 전송계층 (layer 4)의 TCP에 의존한다. 두 프로토콜은 다른 프로토콜이지만 "RFC 6455"에 따르면 웹소켓은 HTTP Port 80 과 433 위에 동작하도록 설계되었다. 또한 HTTP 프록시 및 호환을 지원하도록 설계되었다. 호환을 달성하기 위해 웹소켓 핸드셰이크는 HTTP Upgrade 헤더를 사용하여 HTTP 프로토콜에서 웹소켓 프로토콜로 변경한다.

웹소켓의 URI Scheme

  • ws(WebSocket) - 암호화되지 않은 연결
  • wss(WebSocket Secure) - 암호화된 연결

WebSocket use cases

  • Chatting
  • Live Feed
  • Multiplayer gaming
  • Showing client progress/logging

3. WebSocket HandShake

client request
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com
server response
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat

4. Pros & Cons

Pros - full-duplex (no polling) - HTTP compatiable - Firewall friendly (standard)

Cons - Proxying is tricky - L7 L/B chanllenging (timeouts) - Stateful -> difficult to scale out


Last update: April 26, 2023
Created: April 26, 2023