在没有轮询的情况下在网页上显示后台作业的详细信息



我正在使用延迟作业从数据库更新记录。我想在网页上显示延迟作业更新的记录计数。我可以做ajax轮询,可以显示到目前为止更新的记录计数,但我认为ajax轮询不是一种好方法,因为它会增加服务器的开销。

是否有ajax轮询的替代方案

您也可以尝试使用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),写一个代码指向这个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等来实现它

相关内容

  • 没有找到相关文章

最新更新