如何从我的REST服务获得针对单个GET请求的中间反馈

时间:2013-05-21 15:52:51

标签: web-services jquery rest angularjs jersey

在我的用户界面中,我正在尝试实施一个进度条,显示用户请求的工作完成百分比。

我的后端REST服务需要做很多计算;因此它相对较慢。我想向用户显示后端完成的工作。例如:Task1完成,处理Task2(因此在进度条上显示50%)

我的问题:

服务仅在完成整个任务后返回结果。我不知道如何得到中间反馈,向用户表明某一部分工作是完整的,所以他/她应该耐心等待。

在您开始建议以下任何内容之前,请先澄清一下:

  1. 我不想使用gif Ajax加载器。

  2. 服务已经过优化,无法进一步微调。

  3. 服务工作已经非常原子化,不会因为额外的网络流量而在一个以上的服务中进一步细分而不会造成进一步的性能损失。

  4. 如果以上情况无法完成,请告诉我,我可以停止搜索。

1 个答案:

答案 0 :(得分:1)

您要做的是与HTTP服务器的双向通信,基本上有两种方法:

  • <强> REST的轮询: 设置第二个API调用,客户端可以定期轮询该调用以获取计算的当前状态。

  • <强>的WebSockets : 在客户端和服务器之间建立WebSocket连接,这将允许服务器启动与客户端的通信,并在任务完成后立即发送消息。仅为此添加WebSockets可能会导致比Rest-Polling更多的网络流量。

如果这些都不是你的选择,那么我认为你想要的是可能的。