2011-01-14 67 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請求完成時,您知道任務已完成。

相關問題