简体   繁体   中英

Java HTTP/2 Server Socket

I want to get server sockets working for HTTP/2 in Java, preferably TLS/https.

I've got a TLS server socket working fine, but browsers will only talk HTTP/1.1 to it. If I understand correctly, you need ALPN to get a HTTP/2 browser to connect to your TLS socket and start running HTTP/2 on it; browsers won't ask for upgrade to HTTP/2 on https. It seems Java8 does not do ALPN so far. Maybe there is some other way to coerce browsers to do HTTP/2, at least non-TLS.

So, anybody know how to make a Java server socket for HTTP/2?

Java won't get ALPN until at least JDK 9, which is slated for late 2016 or 2017.

Meanwhile, you can use Jetty 's ALPN implementation , or better yet, use Jetty (or other servers as suggested) directly rather than doing your own HTTP/2 implementation using ServerSocket.

[Disclaimer, I am a Jetty committer] Jetty 9.3 has great support for HTTP/2, including HTTP/2 Push .

FYI, Java Dev Team is preparing ALPN for Java 9. Hopefully as you can see this issue, https://bugs.openjdk.java.net/browse/JDK-8062848 ,

ALPN support may be backported to JDK 8 so an implementation is needed that does not introduce any new Java SE APIs. This may require creating something in a com.oracle.ssl.net package or via System Properties.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM