2011年7月28日

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

こんにちは、信岡です。

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

--
信岡 ゆう


投稿者 xml-rpc : 2011年7月28日 20:02
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/105325
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。