2012-04-09 15 views
7

私はApacheサーバーにMOD_SPDYを設定しましたが、NettyのSPDY実装を使用してSPDYチャネルを介してサーバーに要求を送信するようにクライアントコードを改造したいと考えています。NettyでSPDYを使用する

これはNettyを初めて使用したときのことです。だから私は何とか自分のチャンネルを設定してからリクエストを送信する必要があると思います。問題は、チャネルを構成する方法とそれ以降であっても、同時に実行されている可能性のあるチャネル内の複数のHTTP要求を追跡する方法が明確ではないことです。

私の周りGoogleで検索し、SPDYパッケージを見つけた: http://netty.io/docs/stable/api/org/jboss/netty/handler/codec/spdy/package-summary.html

が、ドキュメントがまだそこに非常に薄いです。コードを使用する例は見当たりませんでしたが、最新リリースに存在するというアナウンスのみでした。

誰かがSPDYチャンネルを構築し、それを介して複数のリクエストと応答を送信/追跡する方法の例がありますか?また、サーバーがSPDYをサポートしておらず、チャネルが標準のSSL接続に戻った場合、この機能はどのように機能しますか?

+0

で見つけることができます。あなたがNettyに縛られていない場合は、JettyのSPDYを試すこともできます。http://webtide.intalio.com/2012/03/spdy-support-in-jetty/を参照してください。およびhttp://www.smartjava.org/content/how-use-spdy-jettyを参照してください。 – sbordet

+1

@svordet Billにはすでにサーバーがあり、クライアントが必要です。 – Slartibartfast

+0

実際、sbordetが正しいと思われます。 Jettyには、より使いやすいSPDYクライアントがあります。http://wiki.eclipse.org/Jetty/Feature/SPDY#Using_SPDY_Client_Applications –

答えて

3

例はNettyにあり、SPDYは SessionHandlersocket echo testのテストコードです。私はまだこのことを実行していますが、あなたのクライアントはSpdyFrameCodecSpdySessionHandlerとあなたのハンドラで構成されるパイプラインを作ってください。

ハンドラは、セッションテストでEchoHandlerの後にモデル化する必要があります。SpdySessionHandlerは生フレームをより意味のあるものにデコードする作業を行い、SPDYプロトコルで必要なものをいくつか行います。

フォールバックの場合、SPDYからHTTPに変換するNettyのスナップショットバージョンにはSpdyHttpCodecが存在します。こうすることで、クライアントハンドラをHTTPの観点から構築し、SPDYまたはHTTPを介して透過的に送信されたメッセージを受信することができます。これを行うには、 port unificationのような例を実装する必要があります。

すべてのことです。これをすべて「アウトオブボックス」体験にするユーティリティクラス/ハンドラはほとんどありません。私は実用的な例を作りたがっていますが、今は時間が足りません。答えとして単純に貼り付けるにはコードが多すぎます。

+0

ああ、私は工場から複数のチャンネルをリクエストして、SPDYハンドラそれらを多重化するでしょうか?どのような順序でハンドラを追加する必要がありますか? –

+0

残念ながら、これは単純ではありませんが、提供されたクラスを使用して行うことは可能です。この作業を自分で行うことに興味があるので、後で作業コードを作成しようとします。 – Slartibartfast

2

jettyでspdyを使用する例はあまりありません。私は通常、恥知らずの宣伝のためのものではありませんが、私はちょうどあなたがしたいことをする方法の完全な例を書いています。私は、クライアントがそれをサポートしているときにspdyを提供するようにnettyを設定し、spdyが利用できないときにhttpにフォールバックします。コードはhttp://www.smartjava.org/content/using-spdy-and-http-transparently-using-netty

+0

答えをありがとう、しかし私は反対を探しています。使用可能な場合にSPDYを使用するHTTP *クライアント*が必要ですが、通常のHTTPにフォールバックします。 –

+0

ああ、そうですね。そうすれば、同じアプローチとハンドラのセットを使用することができます。しかし、ServerBootstrapを使用する代わりに、ClientBootstrap –

関連する問題