TsgcWebSocketProxyServer › Propriétés › Options
Regroupe divers indicateurs de comportement du proxy : gestion des fragments, délais d'attente, pages de test HTTP et validation UTF-8.
property Options: TsgcWSOptionsServer read FOptions write SetOptions;
FragmentedMessages=frgOnlyBuffer, HTMLFiles=True, JavascriptFiles=True, ReadTimeOut=10, WriteTimeOut=0
FragmentedMessages contrôle la façon dont les trames fragmentées reçues des clients en aval sont remises : frgOnlyBuffer (par défaut) met le message en mémoire tampon jusqu'à ce qu'il soit complet et déclenche OnMessage/OnBinary ; frgOnlyFragmented déclenche OnFragmented pour chaque fragment ; frgAll déclenche les deux. HTMLFiles et JavascriptFiles permettent au proxy de servir les pages de test de navigateur intégrées et le client JavaScript (activé par défaut). RaiseDisconnectExceptions lève une exception lorsqu'une déconnexion est provoquée par une erreur de protocole. ReadTimeOut est l'intervalle d'interrogation en millisecondes (10 par défaut) ; WriteTimeOut est le temps en millisecondes pendant lequel une écriture de socket peut rester sans progression avant que le client bloqué soit abandonné, et s'applique à la fois sous Windows et POSIX (Linux), ce qui aide à se défendre contre les clients en lecture lente qui mobiliseraient sinon un thread serveur. Avec la valeur par défaut 0, les gestionnaires d'E/S IOCP et EPOLL (voir IOHandlerOptions) abandonnent quand même un client dont les écritures ne progressent plus depuis 30 secondes, en clair ou en TLS, tandis que le gestionnaire d'E/S par défaut attend sans limite. Définissez donc WriteTimeOut (par exemple 30000) lorsque le serveur utilise le gestionnaire d'E/S par défaut et envoie des données à de nombreux clients. ValidateUTF8 rejette les messages texte contenant des séquences UTF-8 invalides (désactivé par défaut). Software contient la valeur envoyée dans l'en-tête 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;