2013-11-15 57 views
2

我建立使用的ActionController :: Live和和自定義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 

,這是我的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

上證所是一個王室痛苦的工作。您的設置是否適用於Chrome? –

+0

不,它不在鉻的工作,我只是檢查。我注意到的事情是EventSource方法不能從我在控制檯上看到的東西上工作。 –

+0

好的,這肯定會擴展可能的問題 –

回答

0

我對SSE的理解在這裏是錯誤的,SSE和我正在工作的頁面/控制器,我把它們當作一個,我試圖在firefox或chrome中查看SSE的控制器。我對SSE的理解很差。 SSE控制器和我想要觸發事件的頁面是完全不同的。我得到這個答案,在本教程

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

年底希望你們得到它了。