TsgcTCPClient › Événements › OnBinary
Se déclenche lorsque des octets bruts ont été reçus du serveur TCP.
property OnBinary: TsgcWSBinaryEvent;
// TsgcWSBinaryEvent = procedure(Connection: TsgcWSConnection; const Data: TMemoryStream) of object
—
Parce que TsgcTCPClient parle TCP brut sans négociation WebSocket, il n'y a pas de trames typées, donc OnBinary livre les octets exactement tels qu'ils ont été lus depuis le socket. Lorsque TCPEndOfFrameScanBuffer est eofScanNone, chaque lecture de socket déclenche l'événement avec tout ce qui a été mis en mémoire tampon ; lorsqu'il est eofScanLatestBytes ou eofScanAllBytes, le flux est découpé sur le délimiteur TCPEndOfFrame et un événement est levé par trame logique. Le paramètre Data expose les octets décodés sous forme de TMemoryStream positionné à 0 ; lisez-le immédiatement car le flux appartient au client et devient invalide après le retour du gestionnaire. Par défaut NotifyEvents est neAsynchronous, donc OnBinary est synchronisé avec le thread principal et il est sûr de mettre à jour les contrôles d'interface depuis le gestionnaire ; passer à neNoSync si vous devez éviter la synchronisation et gérer la sécurité des threads vous-même.
procedure OnBinary(Connection: TsgcWSConnection; const Data: TMemoryStream);
var
oBytes: TBytes;
begin
SetLength(oBytes, Data.Size);
Data.Position := 0;
Data.ReadBuffer(oBytes[0], Data.Size);
// ... process the raw TCP payload
end;