[前][次][番号順一覧][スレッド一覧]

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