3

在工作中,我们有一个客户端-服务器系统,客户端通过 HTTP 向 Web 服务器提交请求。服务器端处理有时会超过60秒,这是我们公司IT人员设置的代理超时值,无法更改。有没有办法通过来自服务器或客户端的心跳消息使 HTTP 连接保持活动超过 60 秒(最好是任意长的时间段)?

我知道有 HTTP 1.1 持久连接,但这不是我想要的。

HTTP 是否具有保持活动功能,或者这是否必须通过某种套接字选项在 TCP 级别完成?

4

3 回答 3

2

应该让你开始。

于 2010-04-01T22:59:34.870 回答
1

假设您控制系统的两端,您可以通过定期来回发送数据来伪造它,以防止会话空闲——只要数据在移动,大多数浏览器都不会终止连接。

不过,作为一般建议,您最好重新设计系统,以便客户端提交作业请求,然后定期查询(通过 Ajax)以查看它是否已完成。Ajax 查询可能会延迟一段时间,并且服务器可以在它具有肯定状态或超时时间即将过去时做出响应。如果状态更新请求由于某种原因(计时错误或诸如此类)超时,客户端只需重新提交它,而不会造成任何损害,并且从用户的角度来看也没有明显的中断。

于 2010-04-01T23:01:36.370 回答
0

只需让您的服务器在进行处理时发送少量无操作数据 - 如果结果是 HTML,则类似于:

<!-- keepalive -->

应该每 10 秒发送一次。

于 2010-04-02T02:44:18.193 回答