【发布时间】:2013-11-07 18:50:33
【问题描述】:
我正在用 Grails 2.X 编写一个控制器,它开始了一项漫长的工作。我希望能够向网页呈现一些内容,表明进程已开始,并带有正在进行的作业的 id,并让该响应实际显示在用户的网络浏览器中,然后继续处理工作。
我试过只使用渲染而不返回,用户的浏览器只是挂起,直到整个作业完成,然后渲染作业开始。
我尝试重定向到呈现我的消息的不同操作,但这也会挂起浏览器,直到作业完成。
我已经研究过使用过滤器和 afterInterceptor,但尽我所能告诉它们在最终页面发送回客户端之前生效并进行处理。我需要将最后一页发回给我的客户,然后继续处理。
【问题讨论】:
-
因此您需要创建一个新线程,但是为了将数据发送给用户,您必须实现某种形式的长轮询、comet、websockets 等。
-
我可以,但我不打算在完成之前进行持续更新。它更像是“设置它并忘记它”类型的任务。我想我只会将作业的状态保存到数据库中,并在需要时提供一个控制器来检查它。
标签: grails