2013-02-21 21 views
3

我試圖用流式傳輸塊中的HTTP錯誤代碼進行響應,但Web服務器會引發異常。在這種情況下做適當的方式是什麼?如何停止從sinatra內的流塊?

/var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:803:in `throw': 
uncaught throw :halt (ArgumentError) 

我的代碼:

require 'sinatra/base' 
class App < Sinatra::Base 
    get '/' do 
    stream :keep_open do |out| 
     error 401 
    end 
    end 
    run! if app_file == $0 
end 
+0

出於好奇,你的HTTP處理程序是什麼?顯然不是Webrick,對吧?特立尼達?瘦? – digitalextremist 2013-03-06 21:54:21

+0

它很薄..... – akonsu 2013-03-06 23:40:16

回答

0

根據我的理解#stream(),響應頭已經被髮送。雖然您可以繼續流式傳輸數據(正文),甚至關閉連接,但我認爲您可以在發送之後修改標頭。我正在挖掘Sinatra YARD文檔來驗證,但我很確定這是你的問題。