- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在研究 Comet support对于 CppCMS通过长 XMLHttpRequest 轮询的框架。在许多情况下,此类请求在服务器给出任何响应之前由客户端关闭 - 例如页面关闭,用户移动到其他页面或只是刷新。
在服务器端,我希望收到连接断开的通知。我通过 3 个连接器测试了该应用程序:FastCGI、SCGI 和简单的 HTTP 代理。
来自 3 个主要的 UNIX Web 服务器,Apache2、lighttpd 和 Nginx,只有最后一个关闭了连接符合预期,允许我的应用程序从等待队列中删除请求——这对 FastCGI 和 HTTP 代理连接器都有效。 (Nginx默认没有scgi模块)。
其他,Apache和Lighttpd不关闭连接或通知后端断开连接客户,继续进行,就好像客户仍然在线一样。所有 3 个受支持的 API 都会发生这种情况:FastCGI、SCGI 和 HTTP 代理。
我已经为 Lighttpd 打开了一个问题, 但是什么更让我担心的是,Apache——成熟且支持良好的 web 服务器,如 lighttpd并且不公开客户端已经离开的服务器后端。
问题:
谢谢!
最佳答案
(1) 特征。或者,更具体地说,实现细节的影响。
TCP/IP 连接不涉及持续不断的来回流量。因此,如果没有 (a) 客户端告诉您它正在关闭连接或 (b) 超时,则无法知道客户端已离开。
(2) 我不是特别熟悉 Comet 或 CppCMS。但是,是的,在提到的 Web 服务器后面运行着各种 CMS 服务器,它们都必须处理这个问题(而且,是的,这很痛苦)。
(3) 超时是唯一的方法,但可以这么说,您可以减轻痛苦。当没有其他事件时,让客户端每隔 N 秒通过连接对服务器执行一次 ping 操作。无需执行任何操作,您可以在回复中添加内容;并发编辑或任何您需要的通知。
您是正确的,令人惊讶的是 mod_fastcgi 不支持告诉后端 Apache 已检测到断开连接或连接超时。你不是第一个感到沮丧的人。
此页面上的第二个补丁应该可以解决该特定问题:
关于客户端断开连接时 HTTP 代理/FastCGI/SCGI 不关闭连接 - 错误或功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1354690/
我正在用 C 编写一个 Web 服务器,我需要想出一种方法来使用 CGI 在服务器端执行动态内容。 我正在查看 FastCGI 协议(protocol),它看起来令人讨厌。这让我想起了我在类里面将 A
我正在寻找提供 SCGI 服务器的脚本引擎: 像 Apache 这样的服务器接收 HTTP 请求并将它们发送到后端脚本引擎, 脚本引擎解析并处理 SCGI 请求并将回复发送给 Apache, Apac
我正在研究 Comet support对于 CppCMS通过长 XMLHttpRequest 轮询的框架。在许多情况下,此类请求在服务器给出任何响应之前由客户端关闭 - 例如页面关闭,用户移动到其他页
我正在寻找有关客户端 Web 套接字、Web 服务器和在 CGI、FastCGI 或 SCGI 协议(protocol)背后工作的实际应用程序后端之间交互的资源。 目前看来这是不可能的: 请求长度是在
主要的 Web 框架(如 Django、Pyramid、Rails 等)通常作为持久服务器运行,并使用单独的 Web 服务器(如 nginx)作为前端。 Web 服务器通过 FastCGI 或 SCG
我有一些基于 Mojolicious 的应用程序,它们在带有 mod_cgi 和 mod_fastcgi 的 Apache2 下愉快地运行。 网址例如: http://example.org/o
我是一名优秀的程序员,十分优秀!