如何在Ruby on Rails中完成延迟作业后执行ajax回调?

Sea*_*ens 3 ajax ruby-on-rails callback heroku delayed-job

我允许我网站上的用户轮换他们的照片.我通过对旋转照片的Delayed_Job进程(通过Heroku)进行ajax调用来实现此目的.按下"旋转照片"后,我显示一个加载微调器.但我的问题是:什么是我的页面知道Delayed_Job何时完成的最佳方式,所以我可以加载新照片?

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

提前致谢.

idl*_*ers 5

有很多方法可以处理这种事情.你可以像你提到的那样进行ajax轮询,你可以使用彗星方法,你基本上保持连接打开,直到服务器上的任何内容完成,或者你甚至可以全力以赴使用网络套接字(可能有点矫枉过正虽然这个任务).

没有套接字,目前没有办法让服务器向客户端发送消息,而客户端没有请求它.

在任何情况下,您都应该决定是否需要后台任务保证处理轮询/彗星/套接字的所有额外工作.旋转图像不应该花很长时间.根据您是否能够锁定服务器进程,在前台进行图像处理(而不是delayed_job)要简单得多.然后,当对该操作的ajax请求完成时,您知道任务已完成.