TsgcWebSocketProxyServer › Properties › Options
Bundelt diverse proxy-gedragsvlaggen: fragmentafhandeling, time-outs, HTTP-testpagina's en UTF-8-validatie.
property Options: TsgcWSOptionsServer read FOptions write SetOptions;
FragmentedMessages=frgOnlyBuffer, HTMLFiles=True, JavascriptFiles=True, ReadTimeOut=10, WriteTimeOut=0
FragmentedMessages bepaalt hoe gefragmenteerde frames die van downstreamclients worden ontvangen, worden afgeleverd: frgOnlyBuffer (standaard) buffert het bericht tot het compleet is en genereert OnMessage/OnBinary; frgOnlyFragmented genereert OnFragmented voor elk fragment; frgAll genereert beide. HTMLFiles en JavascriptFiles laten de proxy de ingebouwde browser-testpagina's en JavaScript-client serveren (standaard ingeschakeld). RaiseDisconnectExceptions genereert een uitzondering wanneer een verbreking wordt veroorzaakt door een protocolfout. ReadTimeOut is het polling-interval in milliseconden (standaard 10); WriteTimeOut is de tijd in milliseconden die een socketschrijfbewerking geen voortgang mag boeken voordat de vastgelopen client wordt losgekoppeld, en geldt zowel op Windows als op POSIX (Linux), wat helpt beschermen tegen traag lezende clients die anders een serverthread zouden bezetten. Met de standaardwaarde 0 verbreken de IOCP- en EPOLL-IO-handlers (zie IOHandlerOptions) nog steeds de verbinding met een client van wie de writes 30 seconden lang geen voortgang boeken, onversleuteld of met TLS, terwijl de standaard IO-handler onbeperkt wacht. Stel daarom WriteTimeOut in (bijvoorbeeld 30000) wanneer de server de standaard IO-handler gebruikt en naar veel clients verzendt. ValidateUTF8 weigert tekstberichten die ongeldige UTF-8-sequenties bevatten (standaard uitgeschakeld). Software bevat de waarde die wordt verzonden in de HTTP Server-header.
oProxy := TsgcWebSocketProxyServer.Create(nil);
oProxy.Options.FragmentedMessages := frgOnlyBuffer;
oProxy.Options.ValidateUTF8 := true;
oProxy.Options.HTMLFiles := false;
oProxy.Proxy.Host := 'upstream.example.com';
oProxy.Proxy.Port := 8080;
oProxy.Active := true;