2011-06-14 71 views
0

我有一個執行「可能」長時間運行任務的操作。一種可能,因爲它向遠程服務器發出請求,並且由於網絡延遲,它可能會阻塞用戶界面,並給用戶帶來很小的延遲。用戶對於rails中異步任務的反饋

我的問題與「如何在後臺發送長時間的任務」無關,而是如何將通知推送給用戶。我的想法是,用戶點擊按鈕,它在後臺觸發任務,解除網絡界面,用戶可以做任何他想做的事情,當任務完成時,他會收到一條Flash消息。例如,我可以用AJAX,輪詢服務器,一個特定的動作,例如給我我的任務的狀態,但有任何模式可以做到這一點基於事件?獲得概念驗證或原型的答案。

+0

您是否知道[EventMachine](https://github.com/eventmachine/eventmachine)? – coreyward 2011-06-19 17:07:38

+0

當然我是,但如何將它與控制器集成。我無法在控制器中簡單地啓動EM.run。 – 2011-06-20 17:16:32

+0

那麼你問了一個模式; EventMachine使用的模式(它非常接近Reactor模式)是您想要使用的模式。它是爲此而設計的。你不會在Rails中使用它;除了Rails之外,你會使用它。 – coreyward 2011-06-20 17:22:38

回答

1

這裏沒有概念驗證,但是你可以使用像spawn或delayed_job這樣的東西來觸發你的Rails任務並解除阻塞接口,然後用node.js或類似的東西回傳給客戶端。然而,根據你想要做什麼,長輪詢可能比設置更多的服務器軟件更實用。