2016-04-08 1 views
1

の取り扱い再生する:そのコンテンツは俳優のインスタンスに渡される前に、私はそれにいくつかのフィルタリングを行うことができるようには、フレームワークの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) 
    } 

はどのようにリクエストボディへのアクセスを得ることができますか? Playフレームワークのドキュメントはあまり明確ではありません。助言がありますか?

答えて

2

要するに、できません。

これは、WebSocket接続(つまりアップグレード)のための最初のhttp要求が、単純なGET要求以上のものであるため、本文を含むべきではないからです。プレイフレームワークではRequestHeaderRequestボディなし)をRequestオブジェクトとして扱います。

資格情報または認証トークンのようなサーバーで見るためにクライアントからデータを渡す必要がある場合でも、Authorizationヘッダーまたは単純なクエリ文字列を使用できます。

また、そのプレイののWebSocketのドキュメントがcurrently outdatedにもかかわらずacceptWithActorであり、その変異体は、アッカ・ストリームからFlowを使用してacceptOrResultの賛成とその友人で新しいプレイ2.5.xの中で推奨されていません注意してください。

関連する問題