TsgcWebSocketProxyServer › Propriedades › Options
Agrupa flags variados de comportamento do proxy: tratamento de fragmentos, timeouts, páginas de teste HTTP e validação UTF-8.
property Options: TsgcWSOptionsServer read FOptions write SetOptions;
FragmentedMessages=frgOnlyBuffer, HTMLFiles=True, JavascriptFiles=True, ReadTimeOut=10, WriteTimeOut=0
FragmentedMessages controla como os frames fragmentados recebidos de clientes downstream são entregues: frgOnlyBuffer (padrão) armazena a mensagem em buffer até que ela esteja completa e gera OnMessage/OnBinary; frgOnlyFragmented gera OnFragmented para cada fragmento; frgAll gera ambos. HTMLFiles e JavascriptFiles permitem que o proxy sirva as páginas de teste de navegador integradas e o cliente JavaScript (habilitado por padrão). RaiseDisconnectExceptions dispara quando uma desconexão é causada por um erro de protocolo. ReadTimeOut é o intervalo de polling em milissegundos (10 por padrão); WriteTimeOut é o tempo em milissegundos que uma escrita de socket pode ficar sem progresso antes que o cliente travado seja descartado, e se aplica tanto no Windows quanto no POSIX (Linux), o que ajuda a defender contra clientes de leitura lenta que, de outra forma, ocupariam um thread do servidor. Com o valor padrão 0, os manipuladores de E/S IOCP e EPOLL (veja IOHandlerOptions) ainda descartam um cliente cujas escritas ficam sem progresso por 30 segundos, com ou sem TLS, enquanto o manipulador de E/S padrão espera sem limite, portanto defina WriteTimeOut (por exemplo, 30000) quando o servidor usar o manipulador de E/S padrão e enviar dados para muitos clientes. ValidateUTF8 rejeita mensagens de texto que contenham sequências UTF-8 inválidas (desabilitado por padrão). Software contém o valor enviado no cabeçalho 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;