TsgcWebSocketClient › Events › OnFragmented
Options.FragmentedMessages が frgAll または frgOnlyFragmented の場合に受信したすべてのフラグメントに対して発生します。
property OnFragmented: TsgcWSFragmentedEvent;
// TsgcWSFragmentedEvent = procedure(Connection: TsgcWSConnection; const Data: TMemoryStream; const OpCode: TOpCode; const Continuation: Boolean) of object
—
デフォルト(Options.FragmentedMessages = frgOnlyBuffer)では、クライアントはメッセージのフラグメントをバッファリングし、完全なペイロードを受信した後に OnMessage または OnBinary を発生させます。プロパティを frgOnlyFragmented に設定するとフラグメントごとに OnFragmented のみを受信し、frgAll に設定するとフラグメントごとに OnFragmented を受信し、メッセージが完了したときに OnMessage/OnBinary も受信します。Data パラメーターは現在のフラグメントのバイトを含む TMemoryStream です。OpCode は元のフレームタイプ(テキスト、バイナリ、継続など)を示し、Continuation はさらにフラグメントが期待される間は True、最終フラグメントでは False です。このイベントは大きなストリームの進行状況を報告するのに役立ちます。
procedure OnFragmented(Connection: TsgcWSConnection; const Data: TMemoryStream;
const OpCode: TOpCode; const Continuation: Boolean);
begin
ShowProgress(Data.Size);
if not Continuation then
SaveStream(Data);
end;