2011-01-14 68 views
3

我允许我网站上的用户旋转他们的照片。我通过ajax调用Delayed_Job过程(通过Heroku)来完成此操作,该过程旋转照片。他们按下“旋转照片”后,显示一个加载微调器。但我的问题是这样的:什么是我的网页知道Delayed_Job何时完成的最佳方式,因此我可以加载新照片?如何在Ruby on Rails中完成延迟作业后执行ajax回调?

是否需要对我的服务器进行连续的ajax轮询以确定延迟作业是否完成?或者有什么办法可以实现ajax回调到我的页面,当延迟作业完成时会通知我的页面?

在此先感谢。

+0

你真的需要使用Delayed_Job来旋转单个图像吗? – cam 2011-01-14 05:03:13

+0

可能不是,所以这绝对是一个考虑因素。 – 2011-01-14 19:12:48

回答

5

有一堆方法来处理这种事情。你可以像上面提到的那样进行ajax轮询,你可以使用comet方法,在这种方法中,你基本上保持连接处于打开状态,直到服务器上的任何内容完成,或者你甚至可以全力以赴并使用web sockets(可能有点矫枉过正这个任务虽然)。

没有套接字,目前没有办法让你的服务器发送消息给客户端,没有客户端请求它。

无论如何,您应该决定是否需要或想要为后台任务保证处理轮询/彗星/套接字的所有额外工作。旋转图像应该不会花费很长时间。根据您是否可以锁定服务器进程,只需在前台执行图像处理(而不是delayed_job)会更简单。然后,当该动作的ajax请求完成时,您知道任务已完成。

相关问题