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 個の published プロパティ、22 個のメソッド、16 個のイベント。コンポーネントリファレンスから直接抽出した内容です。

接続制御

HostPortURLTLSIPVersionActive により、同期または非同期の接続を確立します。Connect / Disconnect は呼び出し元をブロックし、Start / Stop はワーカースレッドで実行されます。

キープアライブと再接続

HeartBeat はタイマーで WebSocket ping フレームを送信し、WatchDog は予期せぬ切断後に自動再接続を行います。OnBeforeHeartBeat および OnBeforeWatchDog で各サイクルをカスタマイズできます。

TLS とプロキシ

TLSOptions で IOHandler (OpenSSL または SChannel)、TLS バージョン (1.0–1.3)、ALPN を選択し、Proxy がハンドシェイクを HTTP または SOCKS 経由でルーティングし、Authentication が Basic / Bearer / カスタム方式を処理します。

メッセージング API

WriteData はオプションのフラグメンテーションを伴うテキストフレームを送信し、WriteAndWaitData はピアからの応答までブロックし、Ping は ping フレームを送信します。受信データは OnMessageOnBinaryOnFragmented で配信されます。

圧縮とスロットリング

Extensions.PerMessage_Deflate は RFC 7692 圧縮をネゴシエートし、Throttle は双方向のビット毎秒を制限し、QueueOptions は接続スレッド上で Text / Binary / Ping の書き込みを直列化します。

診断

LogFile は受信および送信の生トラフィックをディスクに記録し、NotifyEvents はイベントをメインスレッドへディスパッチする方法を選択し、OnExceptionOnErrorOnHandshake がプロトコルレベルの詳細を公開します。

仕様とリファレンス

本コンポーネントが実装するプロトコルの信頼できる一次情報源です。

ドキュメントとデモ

コンポーネントリファレンスへのディープリンク、すぐに実行可能なデモプロジェクト、体験版のダウンロードを提供します。

オンラインヘルプ — TsgcWebSocketClient 本コンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。
デモプロジェクト — 01.WebSocket\01.Client すぐに実行可能なサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。以下から体験版をダウンロードしてください。
技術ドキュメント (PDF) 本コンポーネントに特化した機能解説、クイックスタート、Delphi / C++ Builder / .NET のコードサンプル、一次情報源リファレンスを収録しています。
ユーザーマニュアル (PDF) ライブラリ内のすべてのコンポーネントを網羅した総合マニュアルです。

はじめる準備はできましたか?

体験版をダウンロードして、Delphi アプリケーションに WebSocket クライアントサポートを追加しましょう。