8

我想让服务器套接字在 Java 中为 HTTP/2 工作,最好是 TLS/https。

我的 TLS 服务器套接字工作正常,但浏览器只会与它通信 HTTP/1.1。如果我理解正确,您需要 ALPN 来获取 HTTP/2 浏览器以连接到您的 TLS 套接字并开始在其上运行 HTTP/2;浏览器不会要求在 https 上升级到 HTTP/2。到目前为止,Java8 似乎还没有做 ALPN。也许还有其他方法可以强制浏览器执行 HTTP/2,至​​少是非 TLS。

那么,有人知道如何为 HTTP/2 制作 Java 服务器套接字吗?

4

2 回答 2

12

Java 至少要到 JDK 9 才能获得 ALPN,JDK 9 预计在 2016 年末或 2017 年推出。

同时,您可以使用JettyALPN 实现,或者更好的是,直接使用 Jetty(或建议的其他服务器),而不是使用 ServerSocket 进行自己的 HTTP/2 实现。

[免责声明,我是 Jetty 提交者] Jetty 9.3 对 HTTP/2 有很好的支持,包括HTTP/2 Push

于 2015-04-06T08:22:03.773 回答
1

仅供参考,Java 开发团队正在为 Java 9 准备 ALPN。希望您能看到这个问题,https://bugs.openjdk.java.net/browse/JDK-8062848

ALPN 支持可能会向后移植到 JDK 8,因此需要一个不引入任何新 Java SE API 的实现。这可能需要在 com.oracle.ssl.net 包中或通过系统属性创建一些东西。

于 2015-06-11T07:45:14.777 回答