sgcWebSockets は SignalR および SignalRCore プロトコルをサポートしています。ここでは、CodeProject の C# サンプルを使って SignalR サーバーに接続する例を紹介します。元記事は次のリンクから参照できます:
この記事では、SignalR をプロトコルとして使ったシンプルなサーバーとクライアントを作成する方法を説明しており、C# のフルソースは GitHub にホストされています。
https://github.com/nthdeveloper/SignalRSamples
以下では、sgcWebSockets ライブラリを使ってこの SignalR サーバーに接続する方法を解説します。
接続を開始する
SignalR サーバーに接続するには、WebSocket クライアントとして TsgcWebSocketClient を、SignalR API として TsgcWSAPI_SignalR を使用します。まず WebSocket クライアントと SignalR API を作成し、SignalR API を WebSocket クライアントに割り当ててください。
WSClient := TsgcWebSocketClient.Create(nil); SignalRAPI := TsgcWSAPI_SignalR.Create(nil); SignalRAPI.Client := WSClient;
続いてサーバーの接続情報を設定します。本例では、サーバーは URL http://localhost:8080 でリッスンしています。TsgcWebSocketClient には WebSocket サーバーの URL を設定するための URL プロパティがあり、WebSocket プロトコルを使うため URL は ws://localhost:8080 となります。
WSClient.URL := 'ws://localhost:8080';
最後に、SignalR は Hub 名を必要とします。本デモでは Hub 名は simplehub です。
SignalRAPI.SignalR.Hubs.Clear;
SignalRAPI.SignalR.Hubs.Add('simplehub');
その後、WSClient.Active := True を呼び出して新しい接続を開始できます。サーバーが稼働していれば、接続成功を知らせるメッセージをサーバーから受信します。
メッセージを送信する
接続が完了したら、サーバーへメッセージを送信できます。 TsgcWSAPI_SignalR コンポーネントの WriteData メソッドを使用します。SignalR は独自プロトコルを使用し、基本的にはいくつかの引数を持つ JSON メッセージです。本例ではメソッド名は Send、引数はテキストメッセージです。受信メッセージは OnSignalRMessage イベントで通知されます。
SignalRAPI.WriteData(Format('{"H":"simplehub","M":"Send","A":["%s"],"I":1}', [txtMessage.Text]));
procedure OnSignalRSignalRMessage(Sender: TObject; MessageId, aData: string);
begin
DoLog('[' + MessageId + '] ' + aData);
end;

グループへの参加・退出メッセージ
サーバーサンプルには、グループにユーザーを参加・退出させる 2 つのメソッドがあります。メッセージフォーマットは Send メッセージと非常に似ています。いくつかの例を見てみましょう:
// join myGroup
SignalRAPI.WriteData(Format('{"H":"simplehub","M":"JoinGroup","A":["%s"],"I":2}', ['myGroup']));
// leave myGroup
SignalRAPI.WriteData(Format('{"H":"simplehub","M":"LeaveGroup","A":["%s"],"I":3}', ['myGroup']));
ダウンロード
C# と Delphi のコンパイル済みプロジェクトは、次のリンクからダウンロードできます:
