2016-04-08 2 views
1

Im folgende Stück Code Handhabung:Wiedergabe Rahmen 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) 
    } 

Wie kann ich den Zugriff auf die Anfrage Körper zu bekommen, so dass ich auf sich eine gewisse Filterung tun konnte, bevor diese Inhalte in der Schauspieler-Instanz übergeben werden? Die Dokumentation von Play Framework ist nicht ganz klar. Irgendwelche Vorschläge?

Antwort

2

Kurz gesagt, können Sie nicht.

Dies ist, weil erste HTTP-Anforderung für Websocket-Verbindung (d. H. Upgrade) sollte nicht Körper enthalten, da es nichts mehr als eine einfache GET-Anfrage ist. Und es wird von Play Framework als solches behandelt, indem Sie RequestHeader (Request ohne Körper) statt Request Objekt geben.

Wenn Sie Daten vom Client weiterleiten müssen, um Server wie Credential oder Auth Token zu betrachten, können Sie immer noch Authorization Header oder einfache Abfragezeichenfolge verwenden.

beachten Sie auch, dass websocket Dokumentation der Play ist currently outdated obwohl acceptWithActor und seine Varianten sind in neuem Spiel 2.5.x für acceptOrResult und seine Freunde Flow aus akka-Stream unter Verwendung veraltet.