TsgcWebSocketProxyServer › イベント › OnFragmented

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;

イベントに戻る