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... ]