WebSocket이란?

WebSocket은 단일 TCP 소켓 위에서 양방향, 전이중 통신 채널을 제공하는 웹 기술이에요. IETF에서 RFC 6455로 표준화되었어요.

실시간 통신

WebSocket은 지속적인 폴링 없이 브라우저와 서버 간의 지속적인 양방향 통신을 가능하게 해요.

HTTP 요청-응답을 넘어서

전통적인 HTTP는 클라이언트가 모든 교환을 시작해야 하는 요청-응답 패턴을 따라요. WebSocket은 HTTP 연결을 지속적인 전이중 채널로 업그레이드해 클라이언트와 서버가 언제든지 데이터를 보낼 수 있어요. 이는 반복적인 HTTP 핸드셰이크의 오버헤드를 없애고 라이브 피드, 온라인 게임, 협업 편집, 금융 시세 표시기 같은 진정한 실시간 상호작용을 가능하게 해요.

  • 양방향: 클라이언트와 서버가 모두 데이터를 푸시할 수 있어요
  • 지속적인 연결로 지연 시간과 오버헤드를 줄여요
  • 표준 TCP 80/443 포트로 동작하며 방화벽을 통과해요
  • IETF에 의해 RFC 6455로 표준화되었어요
CLIENT SERVER Full-Duplex ws:// or wss:// RFC 6455

WebSocket 핸드셰이크

WebSocket 연결은 HTTP 업그레이드 요청으로 시작한 뒤 지속적인 바이너리 프레임 프로토콜로 전환돼요.

1. HTTP 업그레이드 요청

클라이언트가 Upgrade: websocketConnection: Upgrade 헤더와 임의의 Sec-WebSocket-Key를 포함한 HTTP GET 요청을 보내요.

2. 서버 수락

서버가 HTTP 101 Switching Protocols로 응답해 업그레이드를 확인해요. 이제 TCP 연결이 WebSocket 채널이 돼요.

3. 전이중 메시징

양측이 최소 2바이트 오버헤드로 텍스트나 바이너리 프레임을 자유롭게 보내요. 한쪽이 닫을 때까지 연결이 유지돼요.

Delphi WebSocket 예제

몇 줄의 코드로 WebSocket 서버에 연결하고 메시지를 주고받으세요.

uses
  sgcWebSocket_Client, sgcWebSocket_Types;

var
  WSClient: TsgcWebSocketClient;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.Host := 'echo.websocket.org';
  WSClient.Port := 443;
  WSClient.TLS := True;
  WSClient.OnMessage := OnMessage;
  WSClient.Active := True;
end;

procedure TForm1.OnMessage(Connection: TsgcWSConnection;
  const aText: string);
begin
  // Handle incoming messages
  Memo1.Lines.Add('Received: ' + aText);
end;

procedure TForm1.ButtonSendClick(Sender: TObject);
begin
  // Send a text message to the server
  WSClient.WriteData('Hello, WebSocket!');
end;

실시간 애플리케이션을 구축할 준비가 되셨나요?

sgcWebSockets을 다운로드하고 Delphi, C++ Builder 또는 .NET 프로젝트에 오늘 WebSocket 지원을 추가하세요.