rails:3353
From: Yoshihiro Kawano <kawano@i...>
Date: Mon, 21 Dec 2009 11:28:26 +0900
Subject: [rails:3353] Re: 中継サーバを介したストリーミングについて
RoRメーリングリストの皆様 河野です。お疲れ様です。 本件に関して、自己解決できましたのでお知らせします。 以下のようなコードで中継サーバを介したストリーミング が実現できることが分かりました。よろしくお願いします。 ・サーバB 送信側のコード render :text => proc { |response, output| File.open(file_path, "rb") do |read_file| # サーバAにストリーミング送信 while file_data = read_file.read(buffer_size) output.write(file_data) end end } ・サーバA 受信側のコード render :text => proc { |response, output| # サーバBにHTTP通信 w.post('www.example.com') { |file_data| # クライアントにストリーミング送信 if file_data output.write(file_data) end } } Yoshihiro Kawano さんは書きました: > RoRメーリングリストの皆様 > > はじめまして、河野と申します。 > Railsでシステム開発をしています。 > > 現在、以下の構成でサーバBにあるファイルを > サーバAを介してクライアントにストリーミング > 送信する方法を調査しています。 > > クライアント <----> サーバA <----> サーバB > > 調査したところ、コントローラの応答部分で > send_fileメソッドの代わりにrenderメソッド > に対し処理を与えることで、ストリーミング > が実現できることは分かりました。以下に > renderメソッドと参考にしたサイトを示します。 > > render :text => proc { ... } > http://api.rubyonrails.org/classes/ActionController/Base.html#M000658 > > この方法だと、クライアントとサーバの間での > ストリーミングはできるのですが、中継サーバ > を介した場合にうまくできていません。サーバA > からサーバBへのファイル取得要求には、Rubyの > net/httpsクラスを利用しています。 > > http://www.ruby-lang.org/ja/man/html/net_https.html > > サーバAでは、応答結果として受け取ったresponse > をクライアントにそのまま返しているだけです。 > そのため、サーバBからサーバAまではストリーミング > が行われていますが、サーバAからクライアントまで > は行われていない気がしています。 > > もし解決策をご存知の方がいらっしゃいましたら、 > ご教授頂けますでしょうか。よろしくお願いします。 > -- ///////////////////////////////////////////// 株式会社インテック・ネットコア ネットワークプラットフォーム研究開発グループ 河野義広 E-mail: kawano@i... ///////////////////////////////////////////// -- ML: rails@r... 使い方: http://QuickML.com/
3347 2009-12-17 04:59 [kawano@i... ] 中継サーバを介したストリーミングについて -> 3353 2009-12-21 03:28 ┗[kawano@i... ]