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

时间:2017-09-23 17:22:45

标签: scala playframework http2

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

2 个答案:

答案 0 :(得分:1)

在Akka HTTP中,它是Play的基础!框架,HTTP / 2支持在服务器端是实验性的,在客户端尚未提供,据我所知。工作正在进行中,并在Github上进行跟踪。除非您自己倾向于自己编写HTTP / 2客户端支持并且可选择将其捐赠给项目(这可能是一种非常令人满意的体验),否则在框架外部可能是现在的必需品,我&# 39;害怕。

如果您能够使用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

答案 1 :(得分:1)

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

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

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

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

  1. Jetty具有使用HTTP 2.0
  2. 的功能
  3. Netty也支持HTTP 2.0
  4. 检查此list已知的HTTP 2.0实现。