[#48219] るりまへのリダイレクトを個別のページにするための相談 — sunao tanabe <sunao.tanabe@...>

たなべと言います。

11 messages 2011/07/20

[ruby-list:48246] HTTP レスポンスボディを全て処理せずにコネクションを切断する方法

From: "Y. Nobuoka" <nobuoka@...>
Date: 2011-07-28 11:02:26 UTC
List: ruby-list #48246
こんにちは、信岡です。

Net::HTTP [1] を使用して通信を行う際に、レスポンスボディを全て処理せずに
HTTP セッションを終了する方法について悩んでいます。

例えば twitter の Streaming API のようにほぼ無限にレスポンスボディが
送られてくる場合に、こちらからセッションを終了したいと思っています。
以下のように、HTTP#finish メソッドを使用して終了する方法を思いついたのですが、
この方法でいいのでしょうか?
他にちゃんとした方法があるのでしたら教えていただければ幸いです。

よろしくお願いします。

 require 'net/http'

 Net::HTTP.start( 'stream.twitter.com', '80' ) do |http|

   # リクエストの内容
   req = Net::HTTP::Post.new( '/1/statuses/filter.json' )
   req.basic_auth( 'xxxxxx', 'yyyyyy' )

   # シグナルをトラップして終了
   shutdown_proc = ->( sig ){ http.finish() }
   [ :INT, :TERM ].each{ |e| Signal.trap( e, &shutdown_proc ) }

   # HTTP リクエストを送信してレスポンスを処理する
   http.request( req, 'track=xxxx' ) do |res|
     res.read_body do |seg|
       p seg
     end
   end

 end

[1] http://ruby-doc.org/stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html

-- 
信岡 ゆう

In This Thread

Prev Next