TsgcWebSocketProxyServer › Właściwości › Proxy
Identyfikuje cel upstream, czyli właściwy serwer WebSocket/TCP, do którego każdy zaakceptowany klient jest transparentnie przekazywany.
property Proxy: TsgcWSProxyServer_Options read FProxy write SetProxy;
Host='127.0.0.1', Port=80, MessageType=mtText, TLS=False
Proxy opisuje cel nadrzędny — rzeczywisty serwer WebSocket/TCP, do którego komponent przekazuje ruch. Nie jest to konfiguracja serwera proxy HTTP CONNECT; sam TsgcWebSocketProxyServer jest serwerem proxy, a każdy zaakceptowany klient podrzędny powoduje nawiązanie odpowiedniego połączenia wychodzącego z tym celem. Należy skonfigurować właściwości podrzędne przed aktywacją komponentu: Host to nazwa hosta lub adres IP serwera nadrzędnego (domyślnie 127.0.0.1), Port to port TCP, na którym nasłuchuje (domyślnie 80), MessageType wybiera, czy przekazywany tekst jest przesyłany jako ramki mtText czy mtBinary, a ustawienie TLS na True informuje serwer proxy, że ma otwierać połączenie nadrzędne przez bezpieczne połączenie TLS/SSL (wss://). Punkt końcowy TLS po stronie klientów podrzędnych jest konfigurowany niezależnie za pomocą właściwości SSL i SSLOptions, dzięki czemu niezaszyfrowany port podrzędny może być odwzorowany na bezpieczny serwer nadrzędny (lub odwrotnie).
TLSOptions konfiguruje połączenie TLS nadrzędne, gdy TLS ma wartość True. To ta sama klasa co TsgcWebSocketClient.TLSOptions: IOHandler wybiera iohOpenSSL (wartość domyślna), iohSChannel albo iohNativeTLS, a Version, OpenSSL_Options (VersionMin, APIVersion, LibPath), pliki certyfikatów, VerifyCertificate, ALPNProtocols, NativeTLS_Options i SChannel_Options są stosowane tak samo jak przez klienta WebSocket. Przy domyślnych opcjach OpenSSL negocjuje najwyższą wersję obsługiwaną przez bibliotekę, aż do TLS 1.3. Ustaw TLSOptions.Version albo OpenSSL_Options.VersionMin, aby podnieść najniższą wersję. Z iohNativeTLS połączenie nadrzędne nie potrzebuje żadnej biblioteki OpenSSL, a ponowne połączenia wznawiają sesję TLS za pomocą biletu sesji.
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;