TsgcWebSocketHTTPServerイベント › 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)では、サーバーは WebSocket メッセージのフラグメントをバッファリングし、ペイロード全体が受信されると 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;

イベントに戻る