2012-04-09 135 views
7

我在我的Apache服務器上設置了MOD_SPDY,現在想要改造我的客戶端代碼以使用Netty的SPDY實現,通過SPDY通道將我的請求發送到服務器。與Netty一起使用SPDY

這是我第一次使用Netty的經驗,所以我想我需要以某種方式配置我的頻道,然後通過它發送請求。問題是,如何配置通道,甚至之後如何跟蹤可能正在併發執行的通道內的多個HTTP請求,似乎並不十分清楚。

我周圍的一派,發現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 2012-04-10 07:53:30

+1

@svordet比爾已經有一臺服務器,他需要一個客戶端。 – Slartibartfast 2012-04-10 08:42:23

+0

實際上,它看起來像sbordet是正確的; Jetty也有一個SPDY客戶端,可能更容易使用:http://wiki.eclipse.org/Jetty/Feature/SPDY#Using_SPDY_Client_Applications – 2012-04-10 17:10:30

回答

3

我只能在Netty和SPDY上找到的示例是 SessionHandlersocket echo test的測試代碼。我還沒有使這個東西運行,但你的客戶應該使管道由SpdyFrameCodec,SpdySessionHandler和你的處理程序組成。

您的處理程序應該在會話測試中的EchoHandler之後建模,因爲這種方式SpdySessionHandler可以將原始幀解碼爲更有意義的幀,並執行SPDY協議所需的一些操作。

至於備份,Netty的快照版本中有SpdyHttpCodec,它將SPDY轉換爲HTTP。通過這種方式,您可以根據HTTP構建客戶端處理程序,並通過透明SPDY或HTTP接收消息。要做到這一點,需要實施類似 port unification示例。

就這麼說。有幾個實用程序類/處理程序可以讓所有這些都成爲「開箱即用」的體驗。我想做一個實際的例子,但現在缺乏時間,並且會有太多的代碼將它粘貼在這裏作爲答案。

+0

啊,所以我只是從工廠請求多個通道,並且在SPDY處理程序的引擎蓋下將它們複用?我應該以什麼順序添加處理程序? – 2012-04-10 15:06:51

+0

不幸的是,這並不那麼簡單,但可以使用提供的類來完成。我有興趣自己做這個工作,所以我會盡量在以後創建工作代碼。 – Slartibartfast 2012-04-10 15:37:05

2

沒有太多的例子使用碼頭使用spdy。我通常不是無恥的促銷活動,但我只是寫下了一個關於如何做你想做的事情的完整例子。當客戶端支持它時,我配置了netty來服務spdy,並在spdy不可用時回退到http。您可以在以下網址找到代碼:http://www.smartjava.org/content/using-spdy-and-http-transparently-using-netty

+0

謝謝你的回答,但我正在尋找相反的東西。我想要一個HTTP *客戶端*,它將在可用時使用SPDY,但會回退到常規HTTP。 – 2012-04-30 15:45:10

+0

啊,就這樣。那麼你仍然可以使用幾乎相同的方法和一組處理程序。但不是使用ServerBootstrap,而是使用ClientBootstrap – 2012-04-30 20:10:26