TsgcWebSocketProxyServer › イベント › 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;