Я создаю приложение rails, используя библиотеку ActionController::Live и Custom SSE. Мой сервер - puma, а версия rails - 4, это мой код в моем контроллере:
include ActionController::Live
def index
response.headers['Content-Type'] = 'text/event-stream'
ss = Reloader::SSE.new(response.stream)
100.times {
ss.write({ :message => "just checking"}, :event => 'refresh')
sleep 10
}
ensure
ss.close
end
а это файл моей библиотеки sse.rb
class SSE
def initialize io
@io = io
end
def write object, options = {}
options.each do |k,v|
@io.write "#{k}: #{v}\n"
end
@io.write "data: #{JSON.dump(object)}\n\n"
end
def close
@io.close
end
end
и это мой файл application.js для обработки SSE
$(document).ready(function() {
setTimeout(function() {
var source = new EventSource('/');
source.addEventListener('refresh', function(e) {
window.location.reload();
});
}, 1);
});
Я следую инструкциям с этого сайта http://tenderlovemaking.com/2012/07/30/is-it-live.html Всякий раз, когда я загружаю свою страницу Firefox, она не обрабатывает поток, вместо этого показывает возможность загрузки потока в виде текстового файла. Я не понимаю, почему это происходит.