TsgcTCPClient › Zdarzenia › OnBinary

OnBinary Zdarzenie

Wywoływane po odebraniu surowych bajtów z serwera TCP.

Składnia

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

Wartość domyślna

—

Uwagi

Ponieważ TsgcTCPClient komunikuje się przez surowe TCP bez uzgadniania WebSocket, nie ma typowanych ramek, więc OnBinary dostarcza bajty dokładnie tak, jak zostały odczytane z gniazda. Gdy TCPEndOfFrameScanBuffer ma wartość eofScanNone, każdy odczyt z gniazda wywołuje zdarzenie z tym, co zostało zbuforowane. Gdy ma wartość eofScanLatestBytes lub eofScanAllBytes, strumień jest dzielony według ogranicznika TCPEndOfFrame i dla każdej logicznej ramki wywoływane jest jedno zdarzenie. Parametr Data udostępnia zdekodowane bajty jako TMemoryStream ustawiony na pozycji 0. Należy go odczytać natychmiast, ponieważ strumień jest własnością klienta i staje się nieważny po powrocie z obsługi. Domyślnie NotifyEvents ma wartość neAsynchronous, więc OnBinary jest synchronizowane z wątkiem głównym i można bezpiecznie aktualizować kontrolki interfejsu z poziomu obsługi. Należy przełączyć na neNoSync, jeśli konieczne jest uniknięcie synchronizacji i samodzielne zarządzanie bezpieczeństwem wątkowym.

Przykład


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;

Powrót do Zdarzeń