我有一个持久的http请求(后端有大量计算)。
目前,这一切都是同步的,而服务器计算机、浏览器看不到输出/结果。一段时间后,连接断开,浏览器中显示超时错误。
我想立即向浏览器返回一些信息,并让它等待结果。如何实现这一目标?
请注意,Java 后端是同步的。所以解决方案需要一些hack在 servlet/前端中可能需要 javascript 请求..?
您可能想使用 COMET 模式。它类似于 AJAX 模式,仅具有长期保存的 HTTP 请求来模拟 feed。看here http://en.wikipedia.org/wiki/Comet_%28programming%29以获得详细的解释。
基本上,您发出一个请求,服务器保存它,然后在有感兴趣的内容时回复。收到回复后,您立即发出另一个长期保留的请求。
这个时间顺序让人感觉像是在喂食。
在你的情况下,它可能会立即返回“是的,我正在处理它”,然后回复“仍在处理 10% 完成的家伙”,依此类推,直到你返回“完成”。
像 Node.js 这样的东西非常擅长实现这种功能。
不过,当您使用同步 Java 后端时,您可能需要某种指示来表明正在取得进展。可能是一个数据库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)