TsgcWebSocketProxyServer › Właściwości › Options
Zawiera różne flagi zachowania serwera proxy: obsługę fragmentów, limity czasu, strony testowe HTTP oraz walidację UTF-8.
property Options: TsgcWSOptionsServer read FOptions write SetOptions;
FragmentedMessages=frgOnlyBuffer, HTMLFiles=True, JavascriptFiles=True, ReadTimeOut=10, WriteTimeOut=0
FragmentedMessages steruje sposobem dostarczania pofragmentowanych ramek odebranych od klientów niższego poziomu: frgOnlyBuffer (domyślnie) buforuje wiadomość do jej ukończenia i zgłasza OnMessage/OnBinary; frgOnlyFragmented zgłasza OnFragmented dla każdego fragmentu; frgAll zgłasza oba. HTMLFiles i JavascriptFiles pozwalają proxy serwować wbudowane testowe strony przeglądarki oraz klienta JavaScript (domyślnie włączone). RaiseDisconnectExceptions zgłasza wyjątek, gdy rozłączenie jest spowodowane błędem protokołu. ReadTimeOut to interwał odpytywania w milisekundach (domyślnie 10); WriteTimeOut to czas w milisekundach, przez jaki zapis do gniazda może nie robić postępów, zanim zawieszony klient zostanie odłączony, i ma zastosowanie zarówno w systemie Windows, jak i POSIX (Linux), co pomaga chronić przed klientami wolno odczytującymi dane, którzy w przeciwnym razie zajmowaliby wątek serwera. Przy wartości domyślnej 0 moduły obsługi we/wy IOCP i EPOLL (zobacz IOHandlerOptions) nadal odłączają klienta, którego zapisy nie robią postępów przez 30 sekund, bez względu na to, czy to zwykłe połączenie, czy TLS, podczas gdy domyślny moduł obsługi we/wy czeka bez ograniczeń. Dlatego ustaw WriteTimeOut (na przykład 30000), gdy serwer korzysta z domyślnego modułu obsługi we/wy i wysyła dane do wielu klientów. ValidateUTF8 odrzuca wiadomości tekstowe zawierające nieprawidłowe sekwencje UTF-8 (domyślnie wyłączone). Software przechowuje wartość wysyłaną w nagłówku HTTP Server.
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;