2016-08-13 25 views
1

我正在使用延迟作业更新数据库中的记录。我想显示由网页上延迟作业更新的记录数。我可以做ajax轮询,并且可以显示迄今已更新的记录数,但我认为ajax轮询并不是好的方法,因为它会增加服务器的开销。在没有轮询的情况下在网页上显示后台作业详细信息

是否有任何替代Ajax轮询。

+0

耶它叫做'websocket' :)如何获取在js文件的更新值

例子 – Abhinay

+0

在网络套接字可以在rails的后台作业发送数据到网页 –

+0

为什么你需要后台工作来完成这项任务。更好的选择是在表中的某处保存计数并继续,如果您唯一的担心是用'delayed_job'更新最新数量的更新记录的网页。你可以尝试'ActionController :: Live'模块,不知道它有多可行,但看看它是否适合你的用例。下面提供一个例子。 – Abhinay

回答

0

你也可以尝试使用来自rails的ActionController::Live模块。

在你的控制器

class MyStreamController < ApplicationController 
    include ActionController::Live 
    def index 
    # calculate number of records... 
    response.headers['Content-Type'] = 'text/event-stream' 
    response.stream.write "Number of records updated: #{i}" 
    response.stream.close 
    end 
end 

然后在您的JS文件(可能是application.js),写代码指向这个网址:/my_stream得到更新后的值。最重要的是,您还可以将其与先前的值进行比较,如果已更改,则将其替换,否则忽略它。所有这些都可以使用JavaScript完成,我会让你知道它。

$(function(){ 
    var source = new EventSource('/my_stream'); 
    source.onmessage = function(e){ 
    console.log(e); // this is value you want to update on page 
    }; 
}); 

注意:您需要使用一个线程服务器一样puma等方式来实现它

+0

我会给它尝试.. –

相关问题