PlayFramework 2.2 で WebSocket をいじっています。最初のリクエストでいくつかのチェックを行い、適切な HTTP ステータスを返したいと考えています。原則として、この質問で尋ねられたのは次のようなものです。
def ws(username: String) = {
if (username == "asoliman")
Action { request =>
Forbidden("Soliman is not allowed here")
}
else
WebSocket.using[String] { request =>
val in = Iteratee.foreach[String]( s => println("got: " + s)).mapDone(_ => println("Disconnected"))
val out = Enumerator[String]("Ahmed", "Mohamed", "Ibrahim").andThen(Enumerator.enumInput(Input.EOF))
(in, out)
}
}
前述のように、これは WebSocketがusing
をasync
返す必要があるため不可能Tuple2[Iteratee, Enumerator]
です。
これに対する推奨されるアプローチはありますか?または、Websocket の Status Codesを送信する方法はありますか?