2013-02-21 80 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文档来验证,但我很确定这是你的问题。