在工作中,我们有一个客户端 - 服务器系统,客户端通过HTTP向Web服务器提交请求 . 服务器端处理有时可能需要60秒以上,这是我们公司的IT人员设置的代理超时值,无法更改 . 有没有办法通过来自服务器或客户端的心跳消息使HTTP连接保持活动超过60秒(最好是任意长时间)?
我知道有HTTP 1.1持久连接,但这不是我想要的 .
HTTP是否具有保持活动能力,还是必须通过某种套接字选项在TCP级别完成?
This应该让你入门
让服务器在进行处理时发送一小撮无操作数据 - 如果结果是HTML,那么类似于:
<!-- keepalive -->
应该每隔10秒发一次 .
假设您控制系统的两侧,您可以通过定期来回发送数据来伪造它以防止会话空闲 - 大多数浏览器只要数据移动就不会终止连接 .
但是,作为一般性建议,您最好重新设计系统,以便客户端提交作业请求,然后定期查询(通过Ajax)以查看是否已完成 . Ajax查询可能会延迟一段时间,服务器可以在其具有肯定状态时响应,也可以在超时时间接近流逝时响应 . 如果状态更新请求由于某种原因(定时错误或诸如此类)而超时,则客户端只需重新提交它而不会造成任何损害,并且从用户的角度来看没有明显的中断 .
3 回答
This应该让你入门
让服务器在进行处理时发送一小撮无操作数据 - 如果结果是HTML,那么类似于:
应该每隔10秒发一次 .
假设您控制系统的两侧,您可以通过定期来回发送数据来伪造它以防止会话空闲 - 大多数浏览器只要数据移动就不会终止连接 .
但是,作为一般性建议,您最好重新设计系统,以便客户端提交作业请求,然后定期查询(通过Ajax)以查看是否已完成 . Ajax查询可能会延迟一段时间,服务器可以在其具有肯定状态时响应,也可以在超时时间接近流逝时响应 . 如果状态更新请求由于某种原因(定时错误或诸如此类)而超时,则客户端只需重新提交它而不会造成任何损害,并且从用户的角度来看没有明显的中断 .