TsgcTCPClient › イベント › OnBinary
TCP サーバーから生のバイトが受信されたときに発火します。
property OnBinary: TsgcWSBinaryEvent;
// TsgcWSBinaryEvent = procedure(Connection: TsgcWSConnection; const Data: TMemoryStream) of object
—
TsgcTCPClient は WebSocket ハンドシェイクなしで生 TCP を使用するため、型付きフレームがありません。OnBinary はソケットから読み取ったバイトをそのまま配信します。TCPEndOfFrameScanBuffer が eofScanNone の場合、すべてのソケット読み取りがバッファリングされたものでイベントをトリガーします。eofScanLatestBytes または eofScanAllBytes の場合、ストリームは TCPEndOfFrame デリミタで分割され、論理フレームごとに 1 つのイベントが発生します。Data パラメータはデコードされたバイトを 0 位置の TMemoryStream として公開します。ハンドラーが返った後はストリームが無効になるため、すぐに読み取ってください。デフォルトでは NotifyEvents は neAsynchronous であるため、OnBinary はメインスレッドと同期され、ハンドラーから UI コントロールを安全に更新できます。同期を避けてスレッドセーフを自己管理する場合は neNoSync に切り替えてください。
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;