TsgcWebSocketProxyServer › イベント › OnBinary

OnBinary イベント

ダウンストリームの WebSocket クライアントがバイナリメッセージを送信するたびに、プロキシがアップストリームに転送する前に発火します。

構文

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

デフォルト値

—

解説

OnBinary は、ダウンストリームのWebSocketクライアントから完全なバイナリペイロードが受信されバッファリングされた後に一度発生します。Dataパラメータは、デコードされたバイトをPosition 0に配置されたTMemoryStreamとして公開します。ストリームはサーバーが所有しており、ハンドラーが返った後に無効になるため、ハンドラー内で読み取ってください。プロキシはハンドラーが返った直後にこのペイロードをアップストリームTCPサーバー(Proxy.Host、Proxy.Port)に中継するため、転送前にフレームを検査またはログに記録するのに便利な場所です。デフォルトでは NotifyEvents は neAsynchronous であるため、OnBinary はメインスレッドと同期されておりUIコントロールを安全に操作できます。スループットを重視する場合は neNoSync に切り替えて接続スレッドでディスパッチしてください。Options.FragmentedMessages が frgOnlyFragmented の場合、このイベントは発生せず、代わりに OnFragmented が使用されます。

使用例


procedure OnBinary(Connection: TsgcWSConnection; const Data: TMemoryStream);
var
  oBitmap: TBitmap;
begin
  oBitmap := TBitmap.Create;
  try
    oBitmap.LoadFromStream(Data);
    Image1.Picture.Assign(oBitmap);
  finally
    FreeAndNil(oBitmap);
  end;
end;

イベントに戻る