3

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がusingasync返す必要があるため不可能Tuple2[Iteratee, Enumerator]です。

これに対する推奨されるアプローチはありますか?または、Websocket の Status Codesを送信する方法はありますか?

4

1 に答える 1

1

2015 年 10 月 7 日更新:

新しい PlayFramework バージョンでは、接続を拒否して、たとえば Forbidden ステータスを返すことができます。こちらのドキュメントを確認してください: https://www.playframework.com/documentation/2.4.x/ScalaWebSockets

元の答え:

答えは、現時点では PlayFramework 2.2 では不可能です。応答は (using/async を介して) WebSocket である必要があり、WebSocket ステータスは実装されていないため、通常の HTTP ステータスは実行できません。私は彼らのレポに問題を提出しました.将来のリリースを待つ必要があります-またはそれを実現するために貢献します:-)

于 2013-10-30T15:12:55.167 に答える