TsgcTCPClient › Eventos › OnBinary

OnBinary Event

Dispara quando bytes brutos foram recebidos do servidor TCP.

Sintaxe

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

Valor Padrão

—

Observações

Como o TsgcTCPClient fala TCP bruto sem um handshake WebSocket, não há frames tipados, então OnBinary entrega os bytes exatamente como foram lidos do socket. Quando TCPEndOfFrameScanBuffer é eofScanNone, toda leitura de socket dispara o evento com o que quer que tenha sido armazenado em buffer; quando é eofScanLatestBytes ou eofScanAllBytes, o stream é dividido pelo delimitador TCPEndOfFrame e um evento é gerado por frame lógico. O parâmetro Data expõe os bytes decodificados como um TMemoryStream posicionado em 0; leia-o imediatamente, pois o stream pertence ao cliente e torna-se inválido após o manipulador retornar. Por padrão, NotifyEvents é neAsynchronous, portanto OnBinary é sincronizado com a thread principal e é seguro atualizar controles de UI a partir do manipulador; mude para neNoSync se você precisar evitar a sincronização e tratar a thread-safety por conta própria.

Exemplo


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;

Voltar para Eventos