TsgcWebSocketProxyServer › Events › OnFragmented
Wywoływane przy każdym odebraniu fragmentu wiadomości od klienta downstream (tylko gdy Options.FragmentedMessages ma wartość frgAll lub frgOnlyFragmented).
property OnFragmented: TsgcWSFragmentedEvent;
// TsgcWSFragmentedEvent = procedure(Connection: TsgcWSConnection; const Data: TMemoryStream; const OpCode: TOpCode; const Continuation: Boolean) of object
—
Domyślnie (Options.FragmentedMessages = frgOnlyBuffer) proxy buforuje fragmenty wiadomości downstream i wywołuje OnMessage lub OnBinary po odebraniu całego ładunku, a następnie przekazuje go upstream. Ustawienie FragmentedMessages na frgOnlyFragmented powoduje wywoływanie wyłącznie zdarzenia OnFragmented dla każdego fragmentu. Ustawienie frgAll powoduje wywoływanie OnFragmented dla każdego fragmentu, a następnie OnMessage/OnBinary po skompletowaniu wiadomości. Parametr Data to TMemoryStream z bajtami bieżącego fragmentu, OpCode wskazuje oryginalny typ ramki (tekst, binarny, kontynuacja itp.), a Continuation ma wartość True, gdy oczekiwane są kolejne fragmenty, i False dla ostatniego fragmentu. Zdarzenie to jest przydatne do raportowania postępu dużych przesyłanych plików.
procedure OnFragmented(Connection: TsgcWSConnection; const Data: TMemoryStream;
const OpCode: TOpCode; const Continuation: Boolean);
begin
ShowProgress(Data.Size);
if not Continuation then
SaveStream(Data);
end;