TsgcWebSocketServer_HTTPAPIメソッド › WriteData

WriteData メソッド

接続 GUID で識別された単一クライアントにメッセージを送信します。

オーバーロード

オーバーロード 1

構文

function WriteData(const aGUID, aMessage: string): Boolean;

パラメータ

名前タイプ説明
aGUIDconst stringクライアントのハンドシェイクが完了したときにサーバーによって割り当てられたターゲット接続の識別子。
aMessageconst stringそのクライアントに WebSocket テキストフレームとして配信するテキストペイロード。

戻り値

指定されたGUIDを持つ接続が見つかり、フレームがそのHTTP.SYSソケットに渡された場合は True、一致するアクティブな接続が存在しない場合は False。(Boolean

解説

このオーバーロードは GUID が aGUID と一致する接続を検索し、その単一クライアントにテキストメッセージを送信します。GUID は TsgcWSConnection.Guid によって公開される値で、通常 OnConnect でキャプチャされアプリケーションによって保存されます。QueueOptions.Text が qmNone 以外の値に設定されている場合、フレームはキューに入れられ、呼び出し元のスレッドではなく接続スレッドからディスパッチされます。これにより複数のスレッドが同じクライアントに送信するときのロックを防ぎます。Asynchronous が有効な場合、HTTP.sys がフレームの書き込みを完了する前にメソッドが返ります。完了は OnAsynchronous を通じて報告されます。すべてのアクティブなクライアントに一度に送信するには Broadcast を使用してください。

使用例


oServer.WriteData('guid', 'My First sgcWebSockets Message!.');

オーバーロード 2

構文

function WriteData(const aGUID: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;

パラメータ

名前タイプ説明
aGUIDconst Stringクライアントのハンドシェイクが完了したときにサーバーによって割り当てられたターゲット接続の識別子。
aStreamTStreamクライアントへの WebSocket バイナリフレームとして送信されるコンテンツを含むソースストリーム。呼び出し元がストリームの所有者のままです。
aSizeIntegerオプションのフラグメントサイズ (バイト単位)。ゼロより大きい場合、ストリームはこのサイズの複数のフラグメントに分割されます。ストリーム全体を単一のフレームとして送信するにはデフォルトの 0 を使用してください。
aStreamingconst TwsStreamingフラグメント化された送信のストリーミングモード(stmNonestmStartstmContinuestmFinish)。デフォルトは stmNone で、完全なスタンドアロンメッセージを送信します。

戻り値

Trueは、指定されたGUIDの接続が見つかり、ストリームがそのHTTP.sysソケットに渡された場合です。Falseは、一致するアクティブな接続が存在しない場合です。(Boolean

解説

このオーバーロードは、指定したストリームから読み取ったバイナリペイロードで単一のクライアントをターゲットにします。ストリームは現在位置から消費され、サーバーは所有権を取得しないため、呼び出し元は WriteData が返るまで(またはキューイングや Asynchronous が有効な場合は送信が実際に完了するまで)ストリームを生存させておく必要があります。QueueOptions.Binary が qmNone 以外に設定されている場合、フレームはキューに入れられ、呼び出し元のスレッドではなく接続スレッドからディスパッチされます。HTTP.sys でひとつの巨大なメッセージとしてバッファするのではなく、複数の WebSocket フレームに分割して送信する必要がある非常に大きなペイロードを送信するときは、aStreaming と合わせて aSize を使用します。

使用例


oStream := TMemoryStream.Create;
try
  oStream.LoadFromFile('payload.bin');
  oServer.WriteData('guid', oStream);
finally
  oStream.Free;
end;

メソッドに戻る