【问题标题】:Extending OkHttp protocol selection扩展 OkHttp 协议选择
【发布时间】:2017-08-21 09:01:58
【问题描述】:

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

OkHttp3 在使用 TCP 时似乎只支持 HTTP/2 Prior Knowledge,所以我构建了一个自定义的 SSLSocketFactorySSLSocket 来实现我的协议。这很hacky,但在先验知识要求开始之前可以正常工作。我的遥控器不支持HTTP/1.1->HTTP/2升级,它需要先验知识,OkHttp似乎只通过TLS扩展支持,但协议选择代码@ 987654321@.

有什么方法可以挂钩协议选择逻辑而不涉及重新实现一半的 OkHttp 或反映到 OkHttp 或 JDK 内部类?也许即使没有假 TLS 黑客?替换 RealConnection 看起来不可行,因为 okhttp 不提供任何可以实现的 ConnectionFactory

【问题讨论】:

    标签: java okhttp okhttp3 http2


    【解决方案1】:

    OkHttp 只会在 HTTPS 上使用 ALPN 执行 HTTP/2。由于您坚持使用自己的自定义协议,请考虑在自定义协议前面添加一个 HTTP/2 over HTTPS 服务器。你也许可以用 nginx 做到这一点?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多