TsgcTCPClient › Eventos › OnBinary
Se activa cuando se han recibido bytes sin procesar del servidor TCP.
property OnBinary: TsgcWSBinaryEvent;
// TsgcWSBinaryEvent = procedure(Connection: TsgcWSConnection; const Data: TMemoryStream) of object
—
Dado que TsgcTCPClient utiliza TCP puro sin handshake WebSocket, no hay frames tipados, por lo que OnBinary entrega los bytes exactamente tal como fueron leídos del socket. Cuando TCPEndOfFrameScanBuffer es eofScanNone, cada lectura del socket genera el evento con lo que se haya almacenado en el búfer; cuando es eofScanLatestBytes o eofScanAllBytes, el flujo se divide en el delimitador TCPEndOfFrame y se genera un evento por cada frame lógico. El parámetro Data expone los bytes decodificados como un TMemoryStream posicionado en 0; léalo inmediatamente porque el flujo es propiedad del cliente y deja de ser válido una vez que el manejador retorna. De forma predeterminada, NotifyEvents es neAsynchronous, por lo que OnBinary se sincroniza con el hilo principal y es seguro actualizar controles de la interfaz de usuario desde el manejador; cambie a neNoSync si necesita evitar la sincronización y gestionar la seguridad de hilos usted mismo.
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;