【问题标题】:How to send HTTP 2.0 request in play framework(scala)如何在播放框架(scala)中发送 HTTP 2.0 请求
【发布时间】:2018-03-05 01:42:54
【问题描述】:

在 play framework(v. 2.6.5 scala) 下运行的后端必须与 Apple Push Notificaton Service (APNs) 通信。 APNs 需要使用 HTTP/2,所以我试图找到任何方法来实现这种通信,但令我惊讶的是,我没有找到任何支持 http v 2.0 的 http scala 客户端。 有没有什么方法可以在不跳出框架的情况下实现这样的通信呢? 谢谢!

【问题讨论】:

    标签: scala playframework http2


    【解决方案1】:

    在 Akka HTTP 中,它是 Play 的基础!据我所知,框架,HTTP/2 支持在服务器端是实验性的,在客户端尚不可用。工作正在进行中,并在Github 上进行跟踪。除非您倾向于自己编写 HTTP/2 客户端支持并有选择地将其捐赠给项目(这可能是一种非常令人满意的体验),否则恐怕现在走出框架可能是必要的.

    如果您能够使用 Java 9(嘿,它已经用了两天了!),您可以考虑使用它的 HTTP/2 客户端。

    Vert.x 最初是一个受 NodeJS 启发的 Java 框架,但在其当前版本中,它包含一个带有 Scala API 的 HTTP/2 客户端:http://vertx.io/docs/vertx-web-client/scala/ - 我从未在生产中使用过它,所以 YMMV...

    编辑:您还可以考虑使用支持 HTTP/2 的 OkHttp 后端的 sttp

    【讨论】:

      【解决方案2】:

      Play Framework 2.6 之前的版本不支持 HTTP 2.0,但是 Play Framework 2.6 是基于 Akka-Http 并且有 experimental support 用于 HTTP 2.0。此功能被标记为“实验性”,因为 API 将来可能会发生变化,并且尚未在野外进行彻底测试。

      要添加对 HTTP/2 的支持,请添加 PlayAkkaHttp2Support 插件。您可以在 enablePlugins 中执行此操作:

      lazy val root = (project in file("."))
        .enablePlugins(PlayScala, PlayAkkaHttp2Support)
      

      如果您考虑替代方案,请查看:

      1. Jetty 能够使用 HTTP 2.0
      2. Netty 也支持 HTTP 2.0

      检查这个list 已知的 HTTP 2.0 实现。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-07
        • 2016-11-02
        • 1970-01-01
        • 2017-08-03
        • 2023-03-18
        • 2014-12-07
        • 2020-01-29
        • 1970-01-01
        相关资源
        最近更新 更多