使用Netty实现SPDY协议

7
我已在我的Apache服务器上设置了MOD_SPDY,现在想要改进客户端代码,使用Netty的SPDY实现通过SPDY通道将请求发送到服务器。
这是我第一次使用Netty,所以我认为我需要配置我的通道,然后通过它发送请求。问题是,似乎不太清楚如何精确地配置通道,即使之后,也不清楚如何在通道内跟踪可能同时执行的多个HTTP请求。
我已经进行了谷歌搜索,并找到了SPDY包:http://netty.io/docs/stable/api/org/jboss/netty/handler/codec/spdy/package-summary.html,但文档仍然相当简单。我似乎没有找到使用代码的任何示例,只有宣布它存在于最新版本中的消息。
是否有人有关于如何构建SPDY通道,然后通过它发送/跟踪多个请求和响应的示例?还有,当服务器不支持SPDY并且通道回退到标准SSL连接时,这会是怎样的情况?

如果您不一定要使用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
实际上,看起来sbordet是正确的;Jetty也有一个SPDY客户端,可能更容易使用:http://wiki.eclipse.org/Jetty/Feature/SPDY#Using_SPDY_Client_Applications - Bill Brasky
2个回答

3

我在Netty和SPDY方面找到的唯一示例是SessionHandlersocket echo test的测试代码。我还没有让这个东西运行起来,但您的客户端应该创建由SpdyFrameCodecSpdySessionHandler和您的处理程序组成的管道。

您的处理程序应该模仿会话测试中的EchoHandler,因为这样SpdySessionHandler就会将原始帧解码为更有意义的帧,并根据SPDY协议的要求执行一些操作。

关于回退,Netty的快照版本中有SpdyHttpCodec,可将SPDY转换为HTTP。这样,您可以根据HTTP构建客户端处理程序,并透明地接收通过SPDY或HTTP传输的消息。要实现此功能,需要实现类似于端口统一示例的内容。
所有这些都说得很清楚了。还有几个实用程序类/处理程序,可以使所有这些成为“开箱即用”的体验。我想做一个工作示例,但现在缺乏时间,并且过多的代码无法简单地粘贴到此处作为答案。

啊,所以我只需要从工厂请求多个通道,在幕后 SPDY 处理程序将对它们进行复用?我应该以什么顺序添加处理程序? - Bill Brasky
不幸的是,这并不简单,但是使用提供的类可以实现。我对让它工作很感兴趣,所以稍后我会尝试构建可行的代码。 - Slartibartfast

2

谢谢您的回答,但我想要相反的。我需要一个HTTP 客户端,它可以在可用时使用SPDY,但会回退到常规HTTP。 - Bill Brasky
啊,这样啊。那么你仍然可以使用几乎相同的方法和处理程序集合。但是,不要使用ServerBootstrap,而要使用ClientBootstrap。 - Jos Dirksen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接