TsgcWebSocketServer_HTTPAPI › イベント › 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 を発生させます。FragmentedMessages を 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;