TsgcTCPClient › 事件 › OnBinary

OnBinary 事件

当从 TCP 服务器接收到原始字节时触发。

语法

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

默认值

—

备注

由于 TsgcTCPClient 使用原始 TCP 通信,没有 WebSocket 握手,因此没有类型化帧,OnBinary 将字节原样投递,与从套接字读取时完全一致。当 TCPEndOfFrameScanBuffer 为 eofScanNone 时,每次套接字读取都会触发事件,携带已缓冲的内容;当其为 eofScanLatestBytes 或 eofScanAllBytes 时,流会在 TCPEndOfFrame 分隔符处拆分,每个逻辑帧触发一次事件。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;

返回事件