在下面的代码中:
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框架中的文档不是很清楚。有什么建议吗?
答案 0 :(得分:2)
简而言之,你不能。
这是因为对于websocket连接(即升级)的初始http请求不应该包含正文,因为它只不过是一个简单的GET请求。 Play Framework通过向您提供RequestHeader
(Request
没有正文)而不是Request
对象来对待它。
如果您需要从客户端传递数据以查看服务器(如凭证或身份验证令牌),您仍然可以使用Authorization
标头或简单查询字符串。
另请注意,Play的websocket文档为currently outdated,即使acceptWithActor
及其变体在新游戏2.5.x中已弃用,而有利于acceptOrResult
及其朋友使用{ {1}}来自akka-stream。