提升:从Future中向客户端发送通知

时间:2011-10-27 21:31:52

标签: scala concurrency lift

在电梯中,我有一个页面接受一些要上传的文件,然后处理文件(大约需要一分钟+)我不想让用户等待整整一分钟只是为了看到另一个页面,所以我决定将处理工作放到Future对象中。我的最终目标是在处理完成后向用户发送指向结果页面的链接。

以下是我的代码的要点:

Futures.future {
  doLongLastingProcessing
  val linkXml = makeLinkToResults
  println("Hey I'm done!")
  S.notice(linkXml)
}

我得到的问题是,在Future中完成的任何S相关的东西似乎都不起作用。工作结束了,我在控制台看到了“嘿,我已经完成了”,但没有注意到。

如何向用户收到“完成”通知(即使他们已离开上传页面)?

2 个答案:

答案 0 :(得分:3)

您应该查看Lift的CometActors并向Future发送相应的CometActor消息。或者您可能只想完全放弃Future,只使用Actors。

请注意,有一些陷阱(例如not having access to S),但听起来你的CometActor只能返回正常的响应。我刚检查了维基,显然你确实有access to S.notice within your CometActor

答案 1 :(得分:0)

这篇文章展示了如何使用彗星演员post

来做你想问的事