Delphi WebSocket 컴포넌트 — 프로덕션 등급 클라이언트 & 서버
Delphi 및 C++Builder용 네이티브 RFC 6455 WebSocket 구현체예요. 수천 개의 동시 연결을 유지하고, Windows, macOS, Linux, iOS 및 Android에서 실행되며, 내장된 WatchDog 자동 재연결로 불안정한 네트워크에서도 살아남는 클라이언트와 서버를 구축하세요.
Delphi 및 C++Builder용 네이티브 RFC 6455 WebSocket 구현체예요. 수천 개의 동시 연결을 유지하고, Windows, macOS, Linux, iOS 및 Android에서 실행되며, 내장된 WatchDog 자동 재연결로 불안정한 네트워크에서도 살아남는 클라이언트와 서버를 구축하세요.
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 라이브러리예요. 동일한 TsgcWebSocketClient 및 TsgcWebSocketHTTPServer 컴포넌트가 Delphi 7부터 Delphi 13까지, Win32, Win64, Linux64, macOS, iOS 및 Android에서, 그리고 C++Builder C2007부터 C13까지 변경 없이 실행돼요. 관리되는 런타임, .NET interop 계층, JavaScript 브리지가 없어요 — 바이너리로 컴파일되는 순수 Pascal 구현이에요.
하나의 PING/PONG 핸들러를 작성하는 것은 쉬워요. TLS 종료 리버스 프록시, IIS WebSocket 모듈, 기업 방화벽, 모바일 셀룰러 핸드오버 및 5,000 클라이언트 부하 테스트에서 살아남는 것은 그렇지 않아요.
일반 WebSocket(ws://), TLS WebSocket(wss://), HTTP/2를 통한 WebSocket, QUIC/HTTP/3를 통한 WebSocket, 원시 TCP 폴백 — 동일한 컴포넌트, 동일한 이벤트. 한 속성을 변경하여 전송을 전환하세요.
WatchDog을 활성화하면 클라이언트는 지수 백오프로 재연결하고, 재인증하며, MQTT 토픽에 다시 구독하고, 큐에 있는 발행을 재생해요 — 이미 작성된 정통 모바일 / IoT 패턴.
서버는 내부적으로 IOCP / kqueue / epoll 리액터를 사용해요. 이벤트 핸들러를 작성하면, 라이브러리가 연결당 직렬화로 스레드 풀에 걸쳐 스케줄링해요.
RFC 7692에 따라 자동으로 협상돼요. JSON 페이로드를 70–90 % 줄이며 모든 최신 브라우저와 로드 밸런서에서 지원돼요.
MQTT 3.1.1/5.0, AMQP 0.9.1/1.0, STOMP, WAMP 및 Server-Sent Events가 동일한 WebSocket 전송 위에 실행돼요 — 하나의 TCP 소켓, 여러 애플리케이션 프로토콜.
TsgcWebSocketHTTPServer는 WebSocket 엔드포인트와 동일한 프로세스에서 정적 파일, REST 엔드포인트, JWT- 및 OAuth2-보호 리소스, gzip 압축 응답 및 HTTP/2 업그레이드를 제공해요.
OpenSSL(크로스 플랫폼), SChannel(Windows 커널 TLS) 또는 HTTP.sys. 클라이언트 인증서, SNI, ALPN, 0-RTT가 있는 TLS 1.3.
서버 측 Channels는 연결을 이름으로 그룹화해요. Broadcast, BroadcastByChannel 및 BroadcastByUser는 단일 호출로 수천 개의 피어로 팬아웃해요.
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 데몬 모드 | 예 | 예 |
폼에 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를 설정하고, OnConnect 및 OnMessage를 처리하고, 연결된 모든 피어에 팬아웃하려면 Broadcast를 호출하세요.
하나의 소스 트리, 22개의 런타임 패키지 — 여전히 활발히 상업적으로 사용되는 모든 Delphi 릴리스를 다뤄요.
| 에디션 | 버전 |
|---|---|
| Delphi / RAD Studio | 7, 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++Builder | 2007, 2009, 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10, 10.1, 10.2, 10.3, 10.4, 11, 12, 13 |
| FreePascal / Lazarus | 3.x (sgcIndy 기반을 통해) |
| 플랫폼 | Win32, Win64, Linux64, macOS Intel/ARM, iOS 장치 + 시뮬레이터, Android ARM/ARM64 |
WebSocket 전송은 라이브러리의 다른 모든 프로토콜의 기반이에요.
RFC 6455 프로토콜, 핸드셰이크, 프레이밍 및 사용 사례에 대한 배경.
동일한 WebSocket 연결을 통해 MQTT 3.1.1 / 5.0을 실행하세요.
서버 푸시 및 HTTP/2를 통한 WebSocket이 있는 다중화 HTTP/2.
WebSocket vs SSE vs HTTP/2 푸시 vs MQTT vs WebRTC — 결정 매트릭스.
연결 하위 집합으로 브로드캐스팅하기 위한 패턴 가이드.
자동 재연결 라이프사이클이 내부적으로 작동하는 방식.
처리량 vs CPU를 위한 permessage-deflate 튜닝.
Delphi 7(2002)부터 Delphi 13(2025)까지 모든 상용 Delphi 릴리스와 일치하는 C++Builder 버전. 단일 소스 트리에서 IDE당 하나씩 22개의 별도 런타임 패키지를 출시해요. 별도의 “레거시” SKU는 없어요; 모든 고객은 모든 버전을 받아요.
네. 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년 업데이트가 포함된 개발자별 로열티 없는 영구 라이선스. 단일 개발자, 팀 및 사이트 라이선스 사용 가능 — 가격을 참조하세요. 모든 상업용 에디션에는 소스 코드가 포함되어 있어요.