[javascript] 웹 소켓 프로토콜의 동작 원리

웹 소켓(WebSocket)은 양방향 통신을 지원하는 프로토콜로, 실시간 웹 애플리케이션을 구현하는 데 사용됩니다. 웹 소켓은 초기 HTTP 연결을 통해 업그레이드되어 커넥션을 유지하며, 서버와 클라이언트 간의 실시간 데이터 전송이 가능합니다.

1. Handshake

웹 소켓의 연결은 HTTP를 기반으로 시작됩니다. 클라이언트가 서버에게 웹 소켓 업그레이드 요청을 보내면, 서버는 업그레이드를 허용하고 HTTP를 웹 소켓 프로토콜로 전환합니다.

// HTTP 요청
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade

2. 데이터 전송

업그레이드된 연결을 통해 클라이언트와 서버는 양방향으로 데이터를 주고받을 수 있습니다. 이러한 연결은 지속되어 있어서, 언제든지 실시간으로 데이터를 전송할 수 있습니다.

// 웹 소켓 데이터 전송
const socket = new WebSocket('wss://example.com/chat');
socket.onopen = function(event) {
  socket.send('Hello, Server!');
};

3. 종료

웹 소켓 연결은 클라이언트나 서버가 명시적으로 종료하지 않는 한 계속 유지됩니다. 연결이 끊어진 경우에는 종료 코드와 함께 연결을 정리합니다.

// 웹 솹겟 연결 종료
socket.onclose = function(event) {
  console.log('Connection closed with code: ' + event.code);
};

웹 소켓은 네트워크 부하를 줄이고 실시간 통신을 지원하여 웹 기술의 진보를 이끄는 중요한 요소로 자리잡았습니다.

자세한 내용은 MDN 웹 소켓 문서를 참고하십시오.

이 글은 웹 소켓 프로토콜의 동작 원리에 대한 간략한 소개입니다.