Java 扩展HTTP协议选择

Java 扩展HTTP协议选择,java,okhttp,okhttp3,http2,Java,Okhttp,Okhttp3,Http2,我正在尝试使用OkHttp为基于HTTP/2的协议实现一个客户端。该协议基本上是一个自定义TCP协议上的未加密HTTP/2-Previous-Knowledge流(是的,我知道它已损坏,不,我无法更改) OkHttp3似乎在使用TCP时只支持HTTP/2先验知识,因此我构建了一个自定义的SSLSocketFactory和SSLSocket,以实现我的协议。这是一个很粗糙的方法,但在先验知识要求生效之前可以正常工作。My remote不支持HTTP/1.1->HTTP/2升级,它需要事先了解,Ok

我正在尝试使用OkHttp为基于HTTP/2的协议实现一个客户端。该协议基本上是一个自定义TCP协议上的未加密HTTP/2-Previous-Knowledge流(是的,我知道它已损坏,不,我无法更改)

OkHttp3似乎在使用TCP时只支持HTTP/2先验知识,因此我构建了一个自定义的
SSLSocketFactory
SSLSocket
,以实现我的协议。这是一个很粗糙的方法,但在先验知识要求生效之前可以正常工作。My remote不支持HTTP/1.1->HTTP/2升级,它需要事先了解,OkHttp似乎只支持通过TLS扩展,但支持协议选择代码


是否有任何方法可以连接到协议选择逻辑中,而不需要重新实现OkHttp的一半或反射到OkHttp或JDK内部类中?也许即使没有假TLS黑客?替换
RealConnection
看起来不可行,因为okhttp不提供任何可以实现的
ConnectionFactory

okhttp将仅使用ALPN通过HTTPS执行HTTP/2。由于您使用了自己的自定义协议,请考虑在HTTP服务器上添加HTTP / 2,而HTTPS服务器则位于您的自定义协议前面。你可以用nginx做这个吗