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