TsgcWebSocketProxyServer › Propriétés › Proxy
Identifie la cible en amont — le vrai serveur WebSocket/TCP vers lequel chaque client accepté est transféré de manière transparente.
property Proxy: TsgcWSProxyServer_Options read FProxy write SetProxy;
Host='127.0.0.1', Port=80, MessageType=mtText, TLS=False
Proxy décrit la cible amont — le vrai serveur WebSocket/TCP vers lequel ce composant transmet le trafic. Ce n'est pas une configuration de proxy HTTP CONNECT ; TsgcWebSocketProxyServer lui-même est le proxy, et chaque client aval accepté provoque l'ouverture d'une connexion sortante correspondante vers cette cible. Configurez les sous-propriétés avant d'activer le composant : Host est le nom d'hôte ou l'IP du serveur amont (par défaut 127.0.0.1), Port est le port TCP sur lequel il écoute (par défaut 80), MessageType sélectionne si le texte transmis est relayé sous forme de trames mtText ou mtBinary, et TLS défini à True indique au proxy d'ouvrir la liaison amont via une connexion TLS/SSL sécurisée (wss://). Le point de terminaison TLS aval exposé aux clients est configuré indépendamment via SSL et SSLOptions, de sorte qu'un port aval en clair peut être mappé vers un serveur amont sécurisé (ou vice versa).
TLSOptions configure la connexion TLS amont lorsque TLS vaut True. C'est la même classe que TsgcWebSocketClient.TLSOptions : IOHandler sélectionne iohOpenSSL (par défaut), iohSChannel ou iohNativeTLS, et Version, OpenSSL_Options (VersionMin, APIVersion, LibPath), les fichiers de certificat, VerifyCertificate, ALPNProtocols, NativeTLS_Options et SChannel_Options s'appliquent comme le client WebSocket les applique. Avec les options par défaut, OpenSSL négocie la version la plus élevée que la bibliothèque prend en charge, jusqu'à TLS 1.3. Définissez TLSOptions.Version ou OpenSSL_Options.VersionMin pour élever la version minimale. Avec iohNativeTLS, la connexion amont ne nécessite aucune bibliothèque OpenSSL et les reconnexions reprennent la session TLS avec un ticket de session.
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;