保持长期HTTP会话的活动状态(非持久HTTP)

保持长期HTTP会话的活动状态(非持久HTTP),http,tcp,client-server,keep-alive,Http,Tcp,Client Server,Keep Alive,在工作中,我们有一个客户机-服务器系统,客户机通过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秒发送一次就可以了。

那么您有一个HTTP请求需要60秒以上才能完成,而代理会将其终止?是否有长时间的暂停,在此期间不进行数据传输,或者传输所有数据的时间太长?我不确定您想做什么,但HTTP请求不是“单向套接字”,它们通常不会闲置很长时间。正如我所说,服务器端处理可能需要很长时间。客户端提交一些参数,服务器进行大量数值分析(如我所说,超过60秒)。没有传输任何数据。