服务器发送的事件方法未由 Firefox 处理

Server-Sent Event method not handled by Firefox

本文关键字:Firefox 处理 方法 事件 服务器      更新时间:2023-09-26

我正在使用ActionController构建一个rails应用程序::Live and and Custom SSE库,我的服务器是彪马,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

这是我的应用程序.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 页面时,它都不会处理流,而是显示将流下载为文本文件的选项。我不知道为什么会发生这种情况。

我对SSE的理解在这里是错误的,SSE和我正在工作的页面/控制器,我将它们视为一个,我试图在Firefox或chrome中查看SSE的控制器。我对上交所的理解很差。SSE 控制器和我要触发事件的页面是完全不同的。我在本教程结束时得到了这个答案

http://tenderlovemaking.com/2012/07/30/is-it-live.html

希望你们也得到它。