我正在使用延迟作业更新数据库中的记录。我想在网页上显示延迟作业更新的记录数。我可以进行 ajax 轮询,并且可以显示到目前为止更新的记录数,但我认为 ajax 轮询不是好方法,因为它会增加服务器的开销。
是否有任何替代ajax轮询的方法。
我正在使用延迟作业更新数据库中的记录。我想在网页上显示延迟作业更新的记录数。我可以进行 ajax 轮询,并且可以显示到目前为止更新的记录数,但我认为 ajax 轮询不是好方法,因为它会增加服务器的开销。
是否有任何替代ajax轮询的方法。
您也可以尝试使用ActionController::Live
rails 中的模块。
在您的控制器中:
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
)中,写一段代码指向这个 url:/my_stream
来获取更新后的值。最重要的是,您还可以将其与以前的值进行比较,如果它已更改,则替换它,否则忽略它。一切都可以使用 javascript 来完成,我会留给您自己解决。
如何在 js 文件中获取更新值的示例:
$(function(){
var source = new EventSource('/my_stream');
source.onmessage = function(e){
console.log(e); // this is value you want to update on page
};
});
注意:您需要使用诸如puma
等的线程服务器来实现它