TsgcWebSocketProxyServer › Ereignisse › OnBinary
Wird jedes Mal ausgelöst, wenn ein Downstream-WebSocket-Client eine Binärnachricht sendet, bevor der Proxy sie upstream weiterleitet.
property OnBinary: TsgcWSBinaryEvent;
// TsgcWSBinaryEvent = procedure(Connection: TsgcWSConnection; const Data: TMemoryStream) of object
—
OnBinary wird ausgelöst, sobald ein vollständiges binäres Payload von einem Downstream-WebSocket-Client empfangen und gepuffert wurde. Der Parameter Data stellt die decodierten Bytes als TMemoryStream auf Position 0 bereit; lesen Sie ihn innerhalb des Handlers, da der Stream dem Server gehört und nach Rückkehr des Handlers ungültig wird. Der Proxy leitet dieses Payload unmittelbar nach Rückkehr des Handlers an den Upstream-TCP-Server (Proxy.Host, Proxy.Port) weiter, sodass es ein praktischer Ort ist, den Frame zu untersuchen oder zu protokollieren, bevor er weitergeleitet wird. Standardmäßig ist NotifyEvents auf neAsynchronous gesetzt, sodass OnBinary mit dem Hauptthread synchronisiert wird und es sicher ist, UI-Steuerelemente anzufassen; wechseln Sie zu neNoSync, um im Verbindungsthread auszuliefern, wenn der Durchsatz wichtig ist. Wenn Options.FragmentedMessages auf frgOnlyFragmented gesetzt ist, wird das Ereignis nicht ausgelöst und stattdessen OnFragmented verwendet.
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;