我正在使用ActionController :: Live和Custom SSE库构建rails应用程序, 我的服务器是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页面时,它都不处理流,而是显示将流下载为文本文件的选项。我不知道为什么会这样。
答案 0 :(得分:0)
我对SSE的理解是错误的,SSE和我正在工作的页面/控制器,我把它们作为一个,我试图在firefox或chrome中查看SSE的控制器。我对SSE的了解很少。 SSE控制器和我想触发事件的页面完全不同。我在本教程结束时得到了这个答案
http://tenderlovemaking.com/2012/07/30/is-it-live.html
希望你们也能得到它。