Delphi WebSocket 클라이언트 — sgcWebSockets | eSeGeCe

Delphi WebSocket 클라이언트

TsgcWebSocketClient — SSL/TLS, 프록시 지원, 메시지 압축, 자동 재연결을 갖춘 Delphi 및 C++ Builder용 풀 기능 WebSocket 클라이언트 컴포넌트.

TsgcWebSocketClient

클라이언트 WebSocket 컴포넌트 — RFC 6455 WebSocket 서버에 연결해 텍스트 및 바이너리 메시지를 교환해요.

컴포넌트 클래스

TsgcWebSocketClient

프로토콜

WebSocket — RFC 6455

플랫폼

Windows, macOS, Linux, iOS, Android

에디션

Standard / Professional / Enterprise

컴포넌트 배치, 몇 가지 속성 설정, 실행

Host, Port, TLS를 설정하고 OnMessage를 처리한 다음 연결을 활성화하세요. 핸드셰이크, 프레이밍, ping/pong은 자동으로 관리돼요.

uses
  sgcWebSocket_Client, sgcWebSocket_Classes;

var
  oClient: TsgcWebSocketClient;
begin
  oClient := TsgcWebSocketClient.Create(nil);
  oClient.Host := '127.0.0.1';
  oClient.Port := 80;
  oClient.TLS := True;
  oClient.Options.Parameters := '/ws/';

  oClient.OnConnect := OnConnect;
  oClient.OnMessage := OnMessage;
  oClient.OnDisconnect := OnDisconnect;

  oClient.Active := True;
end;

procedure TForm1.OnMessage(Connection: TsgcWSConnection;
  const Text: string);
begin
  Memo1.Lines.Add(Text);
end;

// Send a text frame
oClient.WriteData('hello');
// uses: sgcWebSocket_Client, sgcWebSocket_Classes
TsgcWebSocketClient *oClient = new TsgcWebSocketClient(this);
oClient->Host = "127.0.0.1";
oClient->Port = 80;
oClient->TLS = true;
oClient->Options->Parameters = "/ws/";

oClient->OnConnect = OnConnect;
oClient->OnMessage = OnMessage;
oClient->OnDisconnect = OnDisconnect;

oClient->Active = true;

void __fastcall TForm1::OnMessage(TsgcWSConnection *Connection,
    const UnicodeString Text)
{
  Memo1->Lines->Add(Text);
}

// Send a text frame
oClient->WriteData("hello");
using esegece.sgcWebSockets;

var client = new TsgcWebSocketClient();
client.Host = "127.0.0.1";
client.Port = 80;
client.TLS = true;
client.Options.Parameters = "/ws/";

client.OnConnect    += (conn) => Console.WriteLine("#connected: " + conn.IP);
client.OnDisconnect += (conn, code) => Console.WriteLine("#disconnected: " + code);
client.OnMessage    += (conn, text) => Console.WriteLine(text);

client.Active = true;

// Send a text frame
client.WriteData("hello");

내부 구성

게시된 속성 23개, 메서드 22개, 이벤트 16개 — 컴포넌트 레퍼런스에서 바로 가져온 내용이에요.

연결 제어

Host, Port, URL, TLS, IPVersion, Active로 동기 또는 비동기 연결을 열어요. Connect/Disconnect는 호출자를 차단하고, Start/Stop은 워커 스레드에서 실행돼요.

킵얼라이브 및 재연결

HeartBeat는 타이머로 WebSocket ping 프레임을 보내요. WatchDog은 예기치 않은 연결 끊김 후 자동으로 재연결해요. OnBeforeHeartBeatOnBeforeWatchDog로 각 주기를 사용자 정의할 수 있어요.

TLS 및 프록시

TLSOptions는 IOHandler(OpenSSL 또는 SChannel), TLS 버전(1.0–1.3), ALPN을 선택해요. Proxy는 HTTP 또는 SOCKS를 통해 핸드셰이크를 라우팅해요. Authentication은 Basic / Bearer / 사용자 정의 방식을 처리해요.

메시징 API

WriteData는 선택적 단편화와 함께 텍스트 프레임을 전송해요. WriteAndWaitData는 피어가 응답할 때까지 차단해요. Ping은 ping 프레임을 보내요. OnMessage, OnBinary, OnFragmented가 들어오는 데이터를 전달해요.

압축 및 스로틀링

Extensions.PerMessage_Deflate는 RFC 7692 압축을 협상해요. Throttle은 양방향에서 초당 비트수를 제한해요. QueueOptions는 연결 스레드에서 Text / Binary / Ping 쓰기를 직렬화해요.

진단

LogFile은 원시 인바운드 및 아웃바운드 트래픽을 디스크에 덤프해요. NotifyEvents는 메인 스레드로 이벤트가 디스패치되는 방식을 선택해요. OnException, OnError, OnHandshake는 프로토콜 수준 세부 정보를 표면화해요.

WebSocket WinHTTP Client

Indy 소켓 대신 운영체제의 WinHTTP 스택에서 WebSocket 연결을 실행하는 Windows 전용 대체 클라이언트 — 동일한 WebSocket API를 제공하며, 배포할 서드파티 의존성이 없어요.

컴포넌트 클래스

TsgcWSClient_WinHTTPTsgcWebSocketClient와 동일한 메시징 API, 이벤트, 연결 제어를 제공하므로 코드가 익숙하게 유지돼요.

OS HTTP 스택

핸드셰이크와 프레이밍에 네이티브 Windows WinHTTP API를 사용하므로, 애플리케이션과 함께 배포할 추가 소켓 라이브러리가 없어요.

SChannel TLS

보안 연결은 Windows SChannel에서 처리되므로, OpenSSL DLL을 번들로 제공하지 않아도 TLS가 바로 작동해요.

시스템 프록시 및 인증

Windows 시스템 프록시 구성을 따르고 Windows 인증 방식(Basic, NTLM, Negotiate)을 통합해요.

운영체제의 HTTP 및 TLS 스택에 의존하는 순수 Windows 배포를 원할 때는 TsgcWSClient_WinHTTP를 선택하세요. 크로스 플랫폼 대상(macOS, Linux, iOS, Android)에는 위의 표준 TsgcWebSocketClient를 사용하세요.

사양 및 참고 자료

이 컴포넌트가 구현하는 프로토콜의 공식 출처.

문서 및 데모

컴포넌트 레퍼런스로 바로 이동하고, 실행 가능한 데모 프로젝트를 받고, 체험판을 다운로드하세요.

온라인 도움말 — TsgcWebSocketClient 이 컴포넌트의 전체 속성, 메서드, 이벤트 레퍼런스.
데모 프로젝트 — 01.WebSocket\01.Client 실행 가능한 예제 프로젝트. sgcWebSockets 패키지에 포함돼 있어요 — 아래에서 체험판을 다운로드하세요.
기술 문서 (PDF) 이 컴포넌트의 기능, 빠른 시작, Delphi, C++ Builder, .NET 코드 샘플, 1차 출처 참고 자료.
사용자 설명서 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 설명서.

시작할 준비가 되셨나요?

무료 체험판을 다운로드해 Delphi 애플리케이션에 WebSocket 클라이언트 지원을 추가하세요.