Delphi WebSocket 컴포넌트 — 프로덕션 등급 클라이언트 & 서버

Delphi 및 C++Builder용 네이티브 RFC 6455 WebSocket 구현체예요. 수천 개의 동시 연결을 유지하고, Windows, macOS, Linux, iOS 및 Android에서 실행되며, 내장된 WatchDog 자동 재연결로 불안정한 네트워크에서도 살아남는 클라이언트와 서버를 구축하세요.

Delphi WebSocket 컴포넌트란?

WebSocket 프로토콜을 네이티브 Delphi 개발자가 인식하는 속성-및-이벤트 API로 변환하는 드롭인 VCL/FMX 컴포넌트예요.

Delphi WebSocket 컴포넌트는 폼에 드롭하는(또는 런타임에 인스턴스화하는) 비시각적 컴포넌트로, Delphi 애플리케이션과 RFC 6455 WebSocket 피어 — 브라우저, Node.js 서비스, nginx 리버스 프록시, Mosquitto 브로커, OpenAI Realtime 엔드포인트 또는 다른 Delphi 프로세스 — 사이에 전이중 TCP 채널을 엽니다. HTTP 폴링과 달리 WebSocket은 연결을 열어 두어요: 서버는 데이터가 사용 가능한 즉시 밀리초 지연시간으로, 메시지당 HTTP 오버헤드 없이 데이터를 푸시할 수 있어요.

sgcWebSockets는 2013년부터 Delphi 생태계의 참조 WebSocket 라이브러리예요. 동일한 TsgcWebSocketClientTsgcWebSocketHTTPServer 컴포넌트가 Delphi 7부터 Delphi 13까지, Win32, Win64, Linux64, macOS, iOS 및 Android에서, 그리고 C++Builder C2007부터 C13까지 변경 없이 실행돼요. 관리되는 런타임, .NET interop 계층, JavaScript 브리지가 없어요 — 바이너리로 컴파일되는 순수 Pascal 구현이에요.

컴포넌트 클래스

TsgcWebSocketClient / TsgcWebSocketHTTPServer

표준

RFC 6455, RFC 7692 (permessage-deflate)

플랫폼

Windows, macOS, Linux, iOS, Android

Delphi 버전

Delphi 7 → Delphi 13 + C++Builder

직접 만드는 것보다 sgcWebSockets를 선택하는 이유

하나의 PING/PONG 핸들러를 작성하는 것은 쉬워요. TLS 종료 리버스 프록시, IIS WebSocket 모듈, 기업 방화벽, 모바일 셀룰러 핸드오버 및 5,000 클라이언트 부하 테스트에서 살아남는 것은 그렇지 않아요.

하나의 API, 모든 전송

일반 WebSocket(ws://), TLS WebSocket(wss://), HTTP/2를 통한 WebSocket, QUIC/HTTP/3를 통한 WebSocket, 원시 TCP 폴백 — 동일한 컴포넌트, 동일한 이벤트. 한 속성을 변경하여 전송을 전환하세요.

WatchDog 자동 재연결

WatchDog을 활성화하면 클라이언트는 지수 백오프로 재연결하고, 재인증하며, MQTT 토픽에 다시 구독하고, 큐에 있는 발행을 재생해요 — 이미 작성된 정통 모바일 / IoT 패턴.

스레딩이 해결됐어요

서버는 내부적으로 IOCP / kqueue / epoll 리액터를 사용해요. 이벤트 핸들러를 작성하면, 라이브러리가 연결당 직렬화로 스레드 풀에 걸쳐 스케줄링해요.

permessage-deflate

RFC 7692에 따라 자동으로 협상돼요. JSON 페이로드를 70–90 % 줄이며 모든 최신 브라우저와 로드 밸런서에서 지원돼요.

서브 프로토콜 포함

MQTT 3.1.1/5.0, AMQP 0.9.1/1.0, STOMP, WAMP 및 Server-Sent Events가 동일한 WebSocket 전송 위에 실행돼요 — 하나의 TCP 소켓, 여러 애플리케이션 프로토콜.

HTTP 서버도

TsgcWebSocketHTTPServer는 WebSocket 엔드포인트와 동일한 프로세스에서 정적 파일, REST 엔드포인트, JWT- 및 OAuth2-보호 리소스, gzip 압축 응답 및 HTTP/2 업그레이드를 제공해요.

실제로 작동하는 TLS

OpenSSL(크로스 플랫폼), SChannel(Windows 커널 TLS) 또는 HTTP.sys. 클라이언트 인증서, SNI, ALPN, 0-RTT가 있는 TLS 1.3.

채널 & 브로드캐스트

서버 측 Channels는 연결을 이름으로 그룹화해요. Broadcast, BroadcastByChannelBroadcastByUser는 단일 호출로 수천 개의 피어로 팬아웃해요.

실전 테스트 완료

2013년부터 은행, 거래소, IoT 플릿 및 트레이딩 회사에서 프로덕션 환경에 있어요. 매월 업데이트; history.txt는 모든 수정 사항을 추적해요.

기능 체크리스트

RFC가 말하는 모든 것, 그리고 실제 배포에 필요한 운영상의 강화.

기능클라이언트서버
RFC 6455 프레이밍 (text, binary, ping, pong, close)
permessage-deflate (RFC 7692)
단편화 & 연속 프레임
마스킹된 클라이언트 메시지해당 없음
TLS 1.2 / 1.3 (OpenSSL + SChannel)
클라이언트 인증서 / mTLS
JWT & OAuth2 인증
HTTP/2 + WebSocket (RFC 8441)
HTTP/3 + QUIC를 통한 WebSocket (RFC 9220)
WatchDog 자동 재연결해당 없음
하트비트 (PING/PONG)
채널 & 브로드캐스트해당 없음
서브 프로토콜 (MQTT / AMQP / STOMP / WAMP / SSE)
HTTP.sys 호스팅 (Windows 커널)해당 없음
Linux 데몬 모드

Hello WebSocket — 12줄의 Delphi 클라이언트

폼에 TsgcWebSocketClient를 드롭하고, Host / Port를 설정하고, OnMessage를 처리하고, Active := True를 설정하세요.

uses
  sgcWebSocket, sgcWebSocket_Classes;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WS := TsgcWebSocketClient.Create(nil);
  WS.URL := 'wss://echo.websocket.events';
  WS.WatchDog.Enabled := True;
  WS.WatchDog.Interval := 5;
  WS.OnConnect := WSConnect;
  WS.OnMessage := WSMessage;
  WS.OnDisconnect := WSDisconnect;
  WS.Active := True;
end;

procedure TForm1.WSMessage(Connection: TsgcWSConnection; const Text: string);
begin
  Memo1.Lines.Add('<< ' + Text);
end;

procedure TForm1.ButtonSendClick(Sender: TObject);
begin
  WS.WriteData('{"hello":"world"}');
end;

서버 측은 대칭적이에요 — TsgcWebSocketHTTPServer를 드롭하고, Port를 설정하고, OnConnectOnMessage를 처리하고, 연결된 모든 피어에 팬아웃하려면 Broadcast를 호출하세요.

지원되는 Delphi & C++Builder 버전

하나의 소스 트리, 22개의 런타임 패키지 — 여전히 활발히 상업적으로 사용되는 모든 Delphi 릴리스를 다뤄요.

에디션버전
Delphi / RAD Studio7, 2007, 2009, 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13
C++Builder2007, 2009, 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10, 10.1, 10.2, 10.3, 10.4, 11, 12, 13
FreePascal / Lazarus3.x (sgcIndy 기반을 통해)
플랫폼Win32, Win64, Linux64, macOS Intel/ARM, iOS 장치 + 시뮬레이터, Android ARM/ARM64

계속 탐색하기

WebSocket 전송은 라이브러리의 다른 모든 프로토콜의 기반이에요.

WebSocket이란?

RFC 6455 프로토콜, 핸드셰이크, 프레이밍 및 사용 사례에 대한 배경.

MQTT 서브 프로토콜

동일한 WebSocket 연결을 통해 MQTT 3.1.1 / 5.0을 실행하세요.

HTTP/2 클라이언트 & 서버

서버 푸시 및 HTTP/2를 통한 WebSocket이 있는 다중화 HTTP/2.

실시간 프로토콜 선택기

WebSocket vs SSE vs HTTP/2 푸시 vs MQTT vs WebRTC — 결정 매트릭스.

블로그: 채널, 그룹 & 사용자

연결 하위 집합으로 브로드캐스팅하기 위한 패턴 가이드.

블로그: WatchDog & BeforeConnect

자동 재연결 라이프사이클이 내부적으로 작동하는 방식.

블로그: 더 빠른 압축

처리량 vs CPU를 위한 permessage-deflate 튜닝.

자주 묻는 질문

어떤 Delphi 버전이 지원되나요?

Delphi 7(2002)부터 Delphi 13(2025)까지 모든 상용 Delphi 릴리스와 일치하는 C++Builder 버전. 단일 소스 트리에서 IDE당 하나씩 22개의 별도 런타임 패키지를 출시해요. 별도의 “레거시” SKU는 없어요; 모든 고객은 모든 버전을 받아요.

WebSocket 컴포넌트가 TLS / wss://를 지원하나요?

네. URL := 'wss://...'를 설정하고 TLS 제공자를 선택하세요: OpenSSL(크로스 플랫폼, 체험판과 함께 제공), SChannel(Windows 커널 TLS, 배포할 DLL 없음) 또는 HTTP.sys(서버 측, Windows 인증서 저장소에 저장된 인증서). 클라이언트 인증서, SNI, ALPN, TLS 1.3 및 0-RTT가 모두 지원돼요.

서버가 처리할 수 있는 동시 연결 수는 얼마인가요?

Windows에서는 서버가 IOCP를 사용하며 일반 하드웨어에서 프로세스당 50,000+ 동시 연결로 일상적으로 확장돼요. Linux에서는 epoll 리액터가 유사하게 확장돼요. 하드 리미트는 라이브러리가 아닌 OS 수준(파일 디스크립터, 임시 포트 범위, 커널 메모리)이에요.

라이선스 모델은 무엇인가요?

1년 업데이트가 포함된 개발자별 로열티 없는 영구 라이선스. 단일 개발자, 팀 및 사이트 라이선스 사용 가능 — 가격을 참조하세요. 모든 상업용 에디션에는 소스 코드가 포함되어 있어요.

Delphi 앱에 WebSocket을 추가할 준비가 되셨나요?

완전히 작동하는 30일 체험판을 다운로드하세요 — 클라이언트, 서버, 모든 서브 프로토콜, 모든 Delphi 버전.