【发布时间】:2010-12-16 20:08:42
【问题描述】:
我有一个 Web 应用程序,在向服务器发出 HTTP 请求后,客户端在客户端完全接收到响应之前退出(或网络连接中断)。
在这种情况下,应用程序的服务器端需要做一些清理工作。 HTTP 协议中是否有内置方法来检测这种情况。服务器如何知道客户端是在等待响应还是已经退出?
谢谢 维杰库马尔
【问题讨论】:
标签: http networking webserver protocols
我有一个 Web 应用程序,在向服务器发出 HTTP 请求后,客户端在客户端完全接收到响应之前退出(或网络连接中断)。
在这种情况下,应用程序的服务器端需要做一些清理工作。 HTTP 协议中是否有内置方法来检测这种情况。服务器如何知道客户端是在等待响应还是已经退出?
谢谢 维杰库马尔
【问题讨论】:
标签: http networking webserver protocols
不,协议没有内置任何内容来执行此操作(毕竟,您无法判断客户端本身是否已收到响应,或者只是下游代理)。
只需让您的客户发出第二次请求,以确认它已收到并存储了原始响应。如果您没有看到及时的确认,请运行清理。
但是,请确保您了解 Two Generals' Problem 的含义。
【讨论】:
您可能遇到网络问题...通常,当您向服务器发送 HTTP 请求时,首先发送标头,然后发送 POST 的内容(如果它是 post 方法)。同样,服务器使用标题和文档正文进行响应。标题中的第一行是状态。通常,状态 200 是成功状态,如果你得到了,那么获取文档的其余部分应该没有问题。检查这里以获取有关 HTTP 响应状态标头的详细信息 http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html
乐: 对不起,看错了你的问题。基本上,当用户断开连接时,您没有触发器。如果你使用 OOP,你可以使用类的析构函数来清理你需要清理的任何东西。
【讨论】: