TsgcTCPClient › Events › OnBinary

OnBinary Event

Si attiva quando byte grezzi vengono ricevuti dal server TCP.

Sintassi

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

Valore predefinito

—

Note

Poiché TsgcTCPClient utilizza TCP raw senza un handshake WebSocket, non esistono frame tipizzati, quindi OnBinary consegna i byte esattamente come sono stati letti dal socket. Quando TCPEndOfFrameScanBuffer è eofScanNone, ogni lettura dal socket attiva l'evento con tutto ciò che è stato bufferizzato; quando è eofScanLatestBytes o eofScanAllBytes, lo stream viene suddiviso sul delimitatore TCPEndOfFrame e viene generato un evento per ogni frame logico. Il parametro Data espone i byte decodificati come TMemoryStream posizionato a 0; leggerlo immediatamente perché lo stream è di proprietà del client e diventa non valido dopo il ritorno dell'handler. Per impostazione predefinita NotifyEvents è neAsynchronous, quindi OnBinary è sincronizzato con il thread principale ed è sicuro aggiornare i controlli UI dall'handler; passare a neNoSync se si deve evitare la sincronizzazione e gestire autonomamente la thread-safety.

Esempio


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;

Torna agli Eventi