TsgcWebSocketHTTPServer › Événements › OnFragmented
Se déclenche lorsqu'un fragment de message est reçu (uniquement lorsque Options.FragmentedMessages est frgAll ou frgOnlyFragmented).
property OnFragmented: TsgcWSFragmentedEvent;
// TsgcWSFragmentedEvent = procedure(Connection: TsgcWSConnection; const Data: TMemoryStream; const OpCode: TOpCode; const Continuation: Boolean) of object
—
Par défaut (Options.FragmentedMessages = frgOnlyBuffer), le serveur met en mémoire tampon les fragments d'un message WebSocket et déclenche OnMessage ou OnBinary une fois que la charge utile complète a été reçue. Définissez FragmentedMessages sur frgOnlyFragmented pour ne recevoir que OnFragmented par fragment, ou sur frgAll pour recevoir OnFragmented par fragment puis OnMessage/OnBinary lorsque le message est complet. Le paramètre Data est un TMemoryStream avec les octets du fragment actuel, OpCode indique le type de trame d'origine (texte, binaire, continuation...) et Continuation est True tant que d'autres fragments sont attendus et False sur le dernier fragment. Cet événement est utile pour signaler la progression des grands transferts.
procedure OnFragmented(Connection: TsgcWSConnection; const Data: TMemoryStream;
const OpCode: TOpCode; const Continuation: Boolean);
begin
ShowProgress(Data.Size);
if not Continuation then
SaveStream(Data);
end;