Jetty:可以使用 SPDY/3.1 吗?

Posted

技术标签:

【中文标题】Jetty:可以使用 SPDY/3.1 吗?【英文标题】:Jetty: is it possible to use SPDY/3.1? 【发布时间】:2015-04-04 00:33:38 【问题描述】:

我使用 JDK 1.8 和 ALPN 运行 Jetty 服务器,如下所述:How to run Jetty with SPDY using ALPN?

有行:

ALPNServerConnectionFactory alpn = new ALPNServerConnectionFactory("spdy/3", "http/1.1");

和:

HTTPSPDYServerConnectionFactory spdy = new HTTPSPDYServerConnectionFactory(SPDY.V3, httpConfig, push);

但 Chrome 40 只使用“spdy/3.1”和“http/1.1”。启用 ALPN 调试后,它看起来像:

[S] ALPN protocols [spdy/3.1, http/1.1] received from client for 1987cc45[SSLEngine[hostname=169.0.1.126 port=59439] SSL_NULL_WITH_NULL_NULL]

协商以http/1.1 结束。所以我把那行改成:

ALPNServerConnectionFactory alpn = new ALPNServerConnectionFactory("spdy/3.1", "http/1.1");

这表明spdy/3.1 被选中:

[S] ALPN protocol 'spdy/3.1' selected for 1987cc45[SSLEngine[hostname=169.0.1.126 port=59439] SSL_NULL_WITH_NULL_NULL]

但是 Chrome 没有收到响应。我在服务器端没有发现任何异常,但似乎 Jetty 无法与 SPDY/3.1 一起使用。

Jetty 可以与 SPDY/3.1 一起使用吗?如何设置?

我使用 JDK 1.8.0_31 并在引导程序中使用 alpn-boot-8.1.3.v20150130.jar

【问题讨论】:

关于 Jetty 上 SPDY 的更新 -> twitter.com/JettyProject/status/560828357424594946 谢谢。所以我必须等待支持 HTTP/2 的 Jetty 9.3 并在 Chrome 中启用此协议。我看到这项工作在webtide.com :-) Jetty 9.3 已经有了 HTTP/2。 (顺便说一句,这就是 git master 分支) SPDY 未来的另一个更新(Chrome 正在弃用它)-twitter.com/igrigorik/status/564850517071757314 【参考方案1】:

Jetty 不支持SPDY/3.1,只支持SPDY/3

事实上,Jetty 永远不会支持SPDY/3.1

SPDY 和 NPN 刚刚在即将发布的 Jetty 9.3.0 版本中从代码树中删除。

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/commit/?id=2162455b72d5a474bba47d5daf5543d46c2688be

【讨论】:

以上是关于Jetty:可以使用 SPDY/3.1 吗?的主要内容,如果未能解决你的问题,请参考以下文章

jetty 支持内嵌ssh项目吗,为啥在tomcat下面正常的war 放到jetty就跑不起来

SPDY 与 HAProxy 和 Nginx

一个eclipse能同时启动tomcat和jetty吗

Jetty websocket 客户端类 WebSocketClient 线程安全吗?

Jetty/Tomcat 需要用 Java 构建网页吗?

使用 OpenJdk 替代 Jetty Npn