【问题标题】:Access Http.context in a mixed Scala/Java Play! application在混合的 Scala/Java 游戏中访问 Http.context!应用
【发布时间】:2017-08-17 01:33:19
【问题描述】:

我有一个混合的 Scala/Java Play!应用程序(版本 2.5.11)。我刚刚将 WebSocket 处理从 Java 移到了 Scala,但接收请求并返回响应的控制器仍在 Java 中。现在我不能再访问 cookie(也不能访问任何 Http.context)

更详细的:

  • Java 控制器接收 WebSocket 请求并调用 Scala 服务。
  • Scala 服务生成一个play.api.mvc.WebSocket,然后将其提供给 Java 控制器,Java 控制器或多或少只是将其提供给客户端。
  • Java 中的 WebSocket 通常是 play.mvc.WebSocket 类型。
  • 如果我使用 Scala WebSocket Play!不给我Http.context:如果我打电话给Http.Context.current().request().cookies(),我只会得到一个 java.lang.RuntimeException: There is no HTTP Context available from here.

有谁知道我如何在一个控制器操作中访问Http.Context,该操作在 Java 中返回 play.api.mvc.WebSocket?

【问题讨论】:

    标签: java scala playframework


    【解决方案1】:

    您是否考虑过只使用可以传递给控制器​​方法的请求对象,而不是依赖于 java Http.Context 类?

    控制器方法如下所示:

      def socket = WebSocket.acceptOrResult[String, String] { request =>
        // headers
        val headers = request.headers
        // cookies
        val cookies = request.cookies
        // your websocket process
        //  ...
      }
    

    【讨论】:

    • 这是不可能的,因为我的控制器在 Java 中,我只能通过 Http.Context 访问请求对象,这不起作用,因为返回的 WebSocket 是 Scala 的。 :(
    猜你喜欢
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 2011-12-08
    • 2017-05-20
    • 1970-01-01
    相关资源
    最近更新 更多