Socket.IO クライアント

Delphi / C++Builder から Socket.IO サーバーに接続します。Engine.IO トランスポートに加え、ACK およびルームをともなう Socket.IO のイベント / 名前空間レイヤーをサポートします。

TsgcWSAPI_SocketIO

Socket.IO v3 / v4 プロトコル向けのクライアントです。Engine.IO トランスポート、名前空間、イベントの送受信、ACK コールバック、バイナリ添付に対応します。

コンポーネントクラス

TsgcWSAPI_SocketIO

プロトコル

Socket.IO documentation

プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Standard / Professional / Enterprise

配置、接続、Emit、受信

/socket.io/EIO=4&transport=websocket で対象とする TsgcWebSocketClient とペアにすると、コンポーネントが Engine.IO ハンドシェイクを処理し、イベントの Emit / Subscribe が可能になります。

uses
  sgcWebSocket, sgcWebSocket_API_SocketIO;

var
  WSClient: TsgcWebSocketClient;
  SIO: TsgcWSAPI_SocketIO;
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.URL := 'wss://server.example.com/socket.io/?EIO=4&transport=websocket';

  SIO := TsgcWSAPI_SocketIO.Create(nil);
  SIO.Client := WSClient;

  WSClient.Active := True;

  SIO.Emit('/', 'chat:message',
    '{"user":"alice","text":"hello"}');
end;
// uses: sgcWebSocket, sgcWebSocket_API_SocketIO
TsgcWebSocketClient *WSClient = new TsgcWebSocketClient(this);
WSClient->URL = "wss://server.example.com/socket.io/?EIO=4&transport=websocket";

TsgcWSAPI_SocketIO *SIO = new TsgcWSAPI_SocketIO(this);
SIO->Client = WSClient;

WSClient->Active = true;
SIO->Emit("/", "chat:message",
  "{\"user\":\"alice\",\"text\":\"hello\"}");

主な構成

単一の TsgcWebSocketClient 上で Engine.IO トランスポートレイヤー (ping/pong、アップグレード) と Socket.IO メッセージレイヤー (CONNECT、EVENT、ACK、DISCONNECT) の両方を実装します。

Engine.IO トランスポート

EIO=4 ハンドシェイク、25 秒間隔の ping/pong、プロトコルアップグレード経路を処理します。コンポーネントはペイロードのエンコーディング (テキストまたはバイナリ) を自動的にネゴシエートします。

名前空間

Connect(namespace) は同じトランスポート上に追加の名前空間を開きます。Emit(namespace, event, args) は指定した名前空間を対象とし、OnSocketIOEvent はイベントごとに発信元の名前空間を通知します。

イベント ACK

Emit に ACK 識別子を含むコールバックを渡すと、サーバーが応答した際に、対応する ID と JSON 引数とともに OnSocketIOAck が発火します。

バイナリ添付

Socket.IO v4 はインターリーブされたバイナリペイロードをサポートします。コンポーネントはプレースホルダーを保持し、各添付ファイルを JSON エンベロープとともにストリームとして提供します。

再接続

基盤の TsgcWebSocketClient のウォッチドッグをバインドして自動再接続させると、再オープン時にコンポーネントがすべてのアクティブな名前空間に対して CONNECT パケットを再送信します。

ルーム (サーバー側)

Socket.IO のルームはサーバー側の概念です。コンポーネントは、サーバーが定義するルーム契約に従って join / leave イベントを発行することで参加します。

仕様とリファレンス

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

ドキュメントとデモ

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

オンラインヘルプ — API_SocketIO 本コンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。
体験版 — sgcWebSockets Delphi から Socket.IO サーバーに接続するための体験版パッケージをダウンロードできます。
技術ドキュメント (PDF) 本コンポーネントに特化した機能解説、クイックスタート、Delphi および C++ Builder のコードサンプル、一次情報源リファレンスを収録しています。
ユーザーマニュアル (PDF) ライブラリ内のすべてのコンポーネントを網羅した総合マニュアルです。

Socket.IO サーバーと通信する準備はできましたか?

体験版をダウンロードして、Socket.IO を Delphi アプリケーションに統合しましょう。