我試圖用Sinatra從頭開始討論聊天室。我需要檢測用戶何時離開頁面。起初,我正在考慮使用Javascript onbeforeunload
函數,但是然後用戶可能實際上是假的離開或離開而不通知服務器。當用戶離開事件流時檢測到
我對流部分代碼如下所示:
get '/stream', :provides => 'text/event-stream' do
stream :keep_open do |out|
connections << out
end
end
按照西納特拉示例文件之一,chat.rb
,這基本上使一個聊天室,他們使用
out.callback do
connections.delete(out)
end
但在我的測試中,當我關閉頁面作爲測試時它並沒有觸發(在我的例子中,如果代碼被觸發,控制檯上有一些東西,並且沒有任何內容輸出到控制檯)。
有沒有更可靠的方法來檢測用戶是否離開流?此外,我沒有使用socket.io(客戶端)或任何東西,但我打開它,如果它解決了我的問題。
和sinata版本? – 2013-05-14 07:55:06
@SirScript我使用Thin(或WEBrick進行開發)和Sinatra 1.4.2 – Piccolo 2013-05-15 01:16:23
http://www.sinatrarb.com/intro.html:「有些服務器,如WEBRick,甚至可能根本不支持流式傳輸。」 – utapyngo 2013-05-31 13:25:07