我正在通过长XMLHttpRequest民意测验Comet support为CppCMS框架。在许多情况下,客户在给出服务器的任何响应之前关闭这样的请求 - 例如页面关闭,用户移动到其他页面或仅刷新页面。客户端断开连接时,HTTP代理/ FastCGI/SCGI不关闭连接 - 错误或功能?
在服务器端,我希望能收到连接断开的通知。我通过3个连接器测试了应用程序:FastCGI,SCGI和简单的HTTP代理。
从3个主要的UNIX Web服务器Apache2,lighttpd和Nginx中,只有最后一个已经关闭 连接,允许我的应用程序从等待队列中删除请求 - 这对于FastCGI和HTTP代理连接器都有效。 (Nginx默认没有scgi模块)。
其他,Apache和Lighttpd不关闭连接或通知后端有关断开连接的 客户端,如同客户端仍处于联机状态。所有3种支持的API都会发生这种情况:FastCGI,SCGI和HTTP代理。
我已经开了一个问题的Lighttpd,但我是什么 更conserns的事实,阿帕奇 - 成熟和支持的Web服务器作为lighttpd的 和不披露该客户端已经走了服务器后端。
问题:
- 这是一个bug或者这是一个功能?是否有任何理由不关闭Web服务器和应用程序后端之间的连接?
- 现实生活Comet应用程序通过FastCGI/SCGI/HTTP-Proxy后端在这些服务器后面工作吗?
- 如果以上都是真的,他们如何处理这个问题?我知道我可以每隔10秒超时连接所有连接,但我希望尽可能让客户端监听它们,因为这样可以更容易地扩展 - 每个连接都非常灵活 - 成本只是打开的套接字。
谢谢!
这会是很酷的,如果有在那里cppcms标签,但只能有5个标签最大...我留给你决定5个现有标签中的哪个标签可以放弃,以支持新的'cppcms'标签。如果有直接影响cppcms的SO问题可以适当标记,那将会很好。 +1。 – augustin 2011-01-10 12:11:02