我是否可以滥用浏览器超时来避免忙于轮询服务器以获取长时间运行的任务的结果



在我的应用程序中,客户端可以请求可能需要 1-2 分钟才能完成的复杂任务。该任务在单独的线程中运行,请求处理程序通过 BlockingQueue 与其通信。

目前,服务器会立即将客户端重定向到等待页面,该页面每 10 秒轮询一次服务器。但是,这是非常低效的,如果任务在轮询后立即完成,客户端可能需要等待额外的 10 秒。

我想做的是允许阻止请求处理程序(用于等待页面(,直到任务完成,然后才将响应写入用户。根据我的观察,如果服务器接受 TCP 套接字(并且可能已经写回了一些标头??(,大多数浏览器将使用更长的超时,但我不确定不同浏览器的确切超时。

让浏览器等待 2 分钟是否现实?有没有人对此有任何经验或更好的想法?

你有没有想过Push Notification.

您当前拥有的是拉取通知,您可以在其中轮询服务器以获取响应。

在拉动服务器中会让你知道何时响应准备就绪,它被称为彗星又名反向 ajax。

在这种情况下,您的浏览器不再需要等待,您可以继续其他工作,并在响应准备就绪后将其呈现给用户。

是的,浏览器可以等待,只是不要写响应。

解释一下,当您提交工作然后而不是重定向到其他页面时,不要提交响应,而是开始服务器处理并在完成后提交响应。在UI中,您显示处理消息,以便用户知道提交的任务正在处理中。

恕我直言,我觉得这不会有任何好处,因为它会让你的应用程序看起来好像它一次只能处理一个请求,如果这是可以接受的,那么没有问题,尽管考虑到今天的技术,几乎每个人都想在更短的时间内做更多的事情。

最新更新