TsgcTCPClient › Events › OnBinary
Wordt gegenereerd wanneer onbewerkte bytes zijn ontvangen van de TCP-server.
property OnBinary: TsgcWSBinaryEvent;
// TsgcWSBinaryEvent = procedure(Connection: TsgcWSConnection; const Data: TMemoryStream) of object
—
Omdat TsgcTCPClient raw TCP spreekt zonder een WebSocket-handshake, zijn er geen getypeerde frames, dus OnBinary levert de bytes precies op zoals ze van de socket zijn gelezen. Wanneer TCPEndOfFrameScanBuffer eofScanNone is, triggert elke socketlezing de gebeurtenis met wat er is gebufferd; wanneer het eofScanLatestBytes of eofScanAllBytes is, wordt de stream gesplitst op de TCPEndOfFrame-scheidingsteken en wordt er per logisch frame één gebeurtenis gegenereerd. De Data-parameter geeft de gedecodeerde bytes vrij als een TMemoryStream gepositioneerd op 0; lees deze onmiddellijk omdat de stream eigendom is van de client en ongeldig wordt na het terugkeren van de handler. Standaard is NotifyEvents neAsynchronous, zodat OnBinary gesynchroniseerd is met de hoofdthread en het veilig is om UI-besturingselementen vanuit de handler bij te werken; schakel over naar neNoSync als u synchronisatie wilt vermijden en draadveiligheid zelf wilt afhandelen.
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;