J'ai besoin de programmer un serveur sans état pour exécuter des méthodes distantes. Le client utilise REST avec un paramètre JSON pour transmettre le nom de la méthode et ses paramètres. Après l'entretien du résultat, la session est fermée. Je dois utiliser Indy10, TCP/IP comme protocole, et donc utiliser IdHTTPServer.Retour d'information dans une session HTTP sans état
De grands ensembles de résultats sont tronqués par Indy10 et envoyés au client par parties.
Mon problème est maintenant:
Les méthodes sur le serveur fournissent des informations de progression si elles prennent plus de temps pour produire les résultats. Ce sont des messages courts. Comment puis-je écrire au client?
Jusqu'ici j'ai utilisé writeflush
sur le serveur, mais le client a attendu que la demande se termine avant de rendre le résultat complet, y compris les informations de progression. Que puis-je faire pour afficher/traiter ces informations de progression sur le client tout en gardant la connexion ouverte pour recevoir d'autres données sur la même requête?
J'ai besoin d'utiliser TIdHTTPServer, car j'implémente REST (un GET avec des paramètres de TIdHTTP). J'aimerais utiliser quelque chose comme writebufferflush, mais je n'arrive pas à le faire fonctionner - je reçois toujours le premier writeln dans un messagebox, et le reste est rejeté. –
Voir ma modification, ma suggestion est d'utiliser TIdTCPClientCustom du côté client au lieu de TIdHTTP, pour avoir un contrôle total sur le traitement de la réponse du serveur – mjn