缓存搞砸了我的Live-Stream

时间:2016-12-20 08:56:49

标签: ruby-on-rails ruby-on-rails-4 streaming

我正在尝试使用SSE在我的rails应用程序中流式传输。

此代码有效,它正在流式传输到我的浏览器,但count似乎被追逐,因为当我通过控制台更改它时,它在此控制器中保持不变。

class SseController < ActionController::Base
  include ActionController::Live

  def stream
    response.headers['Content-Type'] = 'text/event-stream'
    sse = SSE.new(response.stream)
    begin
      loop do
        count = Email.where(:read => false, :folder_id => nil, :deleted => false, :outgoing => false, :spam => false).count
        sse.write(count, :event => 'refresh')
        sleep 10
      end
      rescue 
      ensure
        sse.close
      end
    end
  end

当我在控制台中执行此操作时。它按预期工作。

loop do
  count = Email.where(:read => false, :folder_id => nil, :deleted => false, :outgoing => false, :spam => false).count
   sse.write(count, :event => 'refresh')
   sleep 10
end

如何在SseController(:: Live)中取消激活chaching或读取正确的计数?

1 个答案:

答案 0 :(得分:0)

好的找到了:

只需要这样做:

Email.uncached do 
  count = ...
end