TsgcWebSocketProxyServer › Properties › Proxy
Identifica o destino upstream — o servidor WebSocket/TCP real para o qual cada cliente aceito é encaminhado de forma transparente.
property Proxy: TsgcWSProxyServer_Options read FProxy write SetProxy;
Host='127.0.0.1', Port=80, MessageType=mtText, TLS=False
Proxy descreve o alvo upstream — o servidor WebSocket/TCP real para o qual este componente encaminha o tráfego. Não é uma configuração de proxy HTTP CONNECT; o próprio TsgcWebSocketProxyServer é o proxy, e cada cliente downstream aceito provoca a abertura de uma conexão de saída correspondente a este alvo. Configure as subpropriedades antes de ativar o componente: Host é o hostname ou IP do servidor upstream (padrão 127.0.0.1), Port é a porta TCP em que ele escuta (padrão 80), MessageType seleciona se o texto encaminhado é retransmitido como frames mtText ou mtBinary, e TLS definido como True diz ao proxy para abrir o trecho upstream sobre uma conexão TLS/SSL segura (wss://). O endpoint TLS downstream exposto aos clientes é configurado independentemente via SSL e SSLOptions, de modo que uma porta downstream simples pode ser mapeada para um servidor upstream seguro (ou vice-versa).
TLSOptions configura a conexão TLS upstream quando TLS é True. É a mesma classe de TsgcWebSocketClient.TLSOptions: IOHandler seleciona iohOpenSSL (o padrão), iohSChannel ou iohNativeTLS, e Version, OpenSSL_Options (VersionMin, APIVersion, LibPath), os arquivos de certificado, VerifyCertificate, ALPNProtocols, NativeTLS_Options e SChannel_Options são aplicados como o cliente WebSocket os aplica. Com as opções padrão, o OpenSSL negocia a versão mais alta que a biblioteca suporta, até TLS 1.3. Defina TLSOptions.Version ou OpenSSL_Options.VersionMin para elevar a versão mínima. Com iohNativeTLS, a conexão upstream não precisa de biblioteca OpenSSL e as reconexões retomam a sessão TLS com um tíquete de sessão.
oProxy := TsgcWebSocketProxyServer.Create(nil);
oProxy.Port := 80;
oProxy.Proxy.Host := 'upstream.example.com';
oProxy.Proxy.Port := 443;
oProxy.Proxy.TLS := true;
oProxy.Proxy.TLSOptions.IOHandler := iohNativeTLS;
oProxy.Proxy.MessageType := mtText;
oProxy.Active := true;