Play Framework WebSocket处理

时间:2016-04-08 12:03:44

标签: scala playframework websocket

在下面的代码中:

  def myRequest: WebSocket[JsValue, JsValue] =
    WebSocket.acceptWithActor[JsValue, JsValue] { request => out =>

      val filtered: Set[Long] = // how to get the request body???

      WebSocketActor.props(filtered, out)
    }

如何才能访问请求体,以便在将内容传递给Actor实例之前对其进行一些过滤? Play框架中的文档不是很清楚。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

简而言之,你不能。

这是因为对于websocket连接(即升级)的初始http请求不应该包含正文,因为它只不过是一个简单的GET请求。 Play Framework通过向您提供RequestHeaderRequest没有正文)而不是Request对象来对待它。

如果您需要从客户端传递数据以查看服务器(如凭证或身份验证令牌),您仍然可以使用Authorization标头或简单查询字符串。

另请注意,Play的websocket文档为currently outdated,即使acceptWithActor及其变体在新游戏2.5.x中已弃用,而有利于acceptOrResult及其朋友使用{ {1}}来自akka-stream。