TsgcWebSocketServer_HTTPAPI › Ereignisse › OnFragmented
Wird ausgelöst, wenn ein Fragment einer Nachricht empfangen wird (nur wenn Options.FragmentedMessages frgAll oder frgOnlyFragmented ist).
property OnFragmented: TsgcWSFragmentedEvent;
// TsgcWSFragmentedEvent = procedure(Connection: TsgcWSConnection; const Data: TMemoryStream; const OpCode: TOpCode; const Continuation: Boolean) of object
—
Standardmäßig (Options.FragmentedMessages = frgOnlyBuffer) puffert der Server die Fragmente einer Nachricht und löst OnMessage oder OnBinary aus, sobald die vollständige Nutzlast empfangen wurde. Setzen Sie FragmentedMessages auf frgOnlyFragmented, um nur OnFragmented pro Fragment zu empfangen, oder auf frgAll, um OnFragmented pro Fragment und dann OnMessage/OnBinary zu empfangen, wenn die Nachricht vollständig ist. Der Parameter Data ist ein TMemoryStream mit den Bytes des aktuellen Fragments, OpCode gibt den ursprünglichen Frame-Typ an (Text, Binär, Continuation...), und Continuation ist True, solange weitere Fragmente erwartet werden, und False beim letzten Fragment. Dieses Ereignis ist nützlich, um den Fortschritt großer Uploads zu melden.
procedure OnFragmented(Connection: TsgcWSConnection; const Data: TMemoryStream;
const OpCode: TOpCode; const Continuation: Boolean);
begin
ShowProgress(Data.Size);
if not Continuation then
SaveStream(Data);
end;