如何在播放框架(scala)中发送HTTP 2.0请求

问题描述:

在播放框架(v.2.6.5 scala)下运行的后端必须与Apple推送通知服务(APN)通信。 APN需要使用HTTP/2,所以我试图找到任何方式来实现这样的通信,但令我惊讶的是我没有找到任何支持http v 2.0的http scala客户端。 有没有什么方法可以实现这样的沟通而不会脱离框架? 谢谢!如何在播放框架(scala)中发送HTTP 2.0请求

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

要添加对HTTP/2的支持,请添加PlayAkkaHttp2Support插件。如果你考虑替代方案来看看

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

:您可以在enablePlugins做到这一点

  1. Jetty必须使用HTTP能力2.0
  2. Netty还支持HTTP 2.0

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

在Akka HTTP中,它是Play的基础!就我所知,框架HTTP/2支持在服务器端是实验性的,在客户端还没有提供。工作正在进行中,并在Github上进行跟踪。除非您倾向于自己编写HTTP/2客户端支持,并且可以选择将其捐赠给项目(这可能会是一个非常令人满意的体验),那么走出框架恐怕将成为现在的必要条件,恐怕。

如果你有能力使用Java 9(嘿,这已经是黄金两天了!),你可以考虑它的HTTP/2客户端。

Vert.x原本是一个Java框架,通过启发的NodeJS,但在其目前的化身,它包括一个HTTP/2客户端与斯卡拉API:http://vertx.io/docs/vertx-web-client/scala/ - 我从来没有用它在生产,使因人而异...

编辑:你也可以考虑sttp OkHttp后端,它支持HTTP/2。