2009-11-08 40 views
1

有誰知道是否有辦法阻止Sinatra在其響應中發送'Connection:close'標頭?Ruby,Sinatra和Closing Connections

要清楚,我有一個非常簡單的

get '/path' do 
    puts "Some (~200 byte long) string" 
end 

但是,看着網絡分析儀的輸出後,我看到它的發送Connection: close頭的HTTP/1.1 200 OK之後,我想這停止!

回答

2

啊哈!似乎Mongrel,我的Sinatra應用程序運行的服務器,不支持Keep-Alive。所以我只是做:

set :server, 'thin' 

gem install thin和一切後,似乎是更好的工作!

+0

你走了。 :) – 2009-11-08 20:21:10

0

我不說話紅寶石可言,而西納特拉網站是不是它是什麼非常清楚(是一個Ruby框架?),所以我可能完全離開我的搖桿在這裏,但:

Connection: close由您的Web服務器在關閉狀態下發送。由於可擴展性的原因,保持通常被認爲是在您的服務器中關閉的步驟之一。公平地說,這裏有兩種思路,特別是當涉及到Ajax時。

我使用nginx的我Django的工作(我想這是類似的),我必須保持活動在nginx的關閉是這樣的:

14:58 [email protected]% grep alive /etc/nginx/nginx.conf       ~ 
    keepalive_timeout 0; 

Apache使用保持活動(見here)。

如果Sinatra是它自己的Web服務器,我找不到任何文檔來關閉它,我會繼續前進,看看我看起來像個白癡。

+0

沒有白癡在這裏相信我,它應該是非常簡單的使用,但我似乎無法弄清楚! Sinatra是一個可以在任意數量的服務器上運行的框架,我目前正在與mongrel(內置於Ruby)一起使用它,所以我想我需要去那裏尋找一些答案! – 2009-11-08 20:04:40

+0

@JP:是的,請在Mongrel的文檔中查找關於保持活躍的信息。我現在正在看,如果我找到了一些東西,我會修改答案。 – 2009-11-08 20:06:25