Je travaille sur Comet support pour le framework CppCMS via de longs scrutations XMLHttpRequest. Dans de nombreux cas, une telle requête est fermée par le client avant qu'une réponse du serveur ne soit donnée - par exemple, la page est fermée, l'utilisateur se déplace vers une autre page ou il est juste refait.Le proxy HTTP/FastCGI/SCGI ne ferme pas la connexion lorsque le client est déconnecté - bug ou fonctionnalité?
Sur le côté serveur, je m'attends à recevoir la notification que la connexion est abandonnée. J'ai testé l'application via 3 connecteurs: FastCGI, SCGI et simple HTTP Proxy. A partir de 3 principaux serveurs Web UNIX, Apache2, lighttpd et Nginx, seul le dernier avait fermé la connexion comme prévu permettant à mon application de supprimer la requête de la file d'attente - cela a fonctionné pour les connecteurs FastCGI et HTTP Proxy. (Nginx n'a pas de module scgi par défaut).
D'autres, Apache et Lighttpd ne ferment pas la connexion ou n'informent pas le backend sur les clients déconnectés, la procédure se déroule comme si le client était toujours en ligne. Cela se produit pour les trois API prises en charge: FastCGI, SCGI et HTTP Proxy.
j'avais ouvert un problème pour Lighttpd, mais ce plus me conserns est le fait que Apache - serveur web mature et bien pris en charge comme lighttpd et ne divulgue pas le back-end du serveur que le client avait disparu.
Questions:
- Est-ce un bug ou c'est une fonctionnalité? Y at-il une raison de ne pas fermer la connexion entre le serveur Web et le backend de l'application?
- Existe-t-il une application Comet réelle fonctionnant derrière ces serveurs via des backends FastCGI/SCGI/HTTP-Proxy?
- Si ce qui précède est vrai, comment font-ils face à ce problème? Je comprends que je peux temporiser toutes les connexions toutes les 10 secondes, mais je voudrais les garder inactives autant que les clients écoutent - parce que cela permet une mise à l'échelle plus facile - chaque connexion est très chère - le coût est seulement le socket ouvert.
Merci!
ce serait cool s'il y avait la balise cppcms là-dedans, mais il ne peut être 5 balises max ... I laissez à vous de décider laquelle des 5 étiquettes existantes peut être supprimée en faveur de la nouvelle étiquette 'cppcms'. Ce serait bien d'avoir des questions SO qui affectent cppcms directement pour être étiquetés de manière appropriée. +1 – augustin