TsgcTCPClient › Ereignisse › OnBinary

OnBinary Ereignis

Wird ausgelöst, wenn rohe Bytes vom TCP-Server empfangen wurden.

Syntax

property OnBinary: TsgcWSBinaryEvent;
// TsgcWSBinaryEvent = procedure(Connection: TsgcWSConnection; const Data: TMemoryStream) of object

Standardwert

—

Hinweise

Da TsgcTCPClient rohes TCP ohne WebSocket-Handshake spricht, gibt es keine typisierten Frames, sodass OnBinary die Bytes genau so liefert, wie sie aus dem Socket gelesen wurden. Wenn TCPEndOfFrameScanBuffer eofScanNone ist, löst jeder Socket-Lesevorgang das Ereignis mit dem aus, was gepuffert wurde; wenn es eofScanLatestBytes oder eofScanAllBytes ist, wird der Stream am TCPEndOfFrame-Trennzeichen aufgeteilt und ein Ereignis pro logischem Frame ausgelöst. Der Parameter Data stellt die dekodierten Bytes als TMemoryStream bereit, der auf 0 positioniert ist; lesen Sie ihn sofort, da der Stream dem Client gehört und nach Rückkehr des Handlers ungültig wird. Standardmäßig ist NotifyEvents neAsynchronous, sodass OnBinary mit dem Haupt-Thread synchronisiert wird und es sicher ist, UI-Steuerelemente aus dem Handler zu aktualisieren; wechseln Sie zu neNoSync, wenn Sie die Synchronisierung vermeiden und die Threadsicherheit selbst handhaben müssen.

Beispiel


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;

Zurück zu Ereignissen