在我的应用程序中,客户端可以请求可能需要 1-2 分钟才能完成的复杂任务。任务在单独的线程中运行,请求处理程序通过 BlockingQueue 与其通信。
目前,服务器会立即将客户端重定向到等待页面,该页面每 10 秒轮询一次服务器。但是,这是非常低效的,如果任务在轮询后立即完成,客户端可能需要额外等待 10 秒。
我想做的是允许请求处理程序(等待页面)被阻塞,直到任务完成,然后才将响应写入用户。根据我的观察,如果服务器接受 TCP 套接字(并且可能已经写回了一些标头??),大多数浏览器将使用更长的超时时间,但我不确定不同浏览器之间的确切超时时间。
让浏览器等待2分钟现实吗?有没有人有这方面的经验或更好的想法?