保持活跃的长期HTTP会话(不是持久性HTTP)

时间:2010-04-01 22:50:24

标签: http tcp client-server keep-alive

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

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

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

3 个答案:

答案 0 :(得分:2)

This应该让你开始。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

让服务器在进行处理时发送一小撮无操作数据 - 如果结果是HTML,那么就像:

<!-- keepalive -->

应该每隔10秒发一次。