PlayFramework Websocket HTTP状态

时间:2013-10-28 21:33:58

标签: scala playframework websocket playframework-2.2

我正在玩PlayFramework 2.2中的WebSockets。我想对初始请求进行一些检查,并可能返回适当的HTTP状态。原则上它看起来像这样,在this question中询问:

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's Status Codes

1 个答案:

答案 0 :(得分:1)

2015年10月7日更新:

在较新的PlayFramework版本中,可以拒绝连接,因此返回Forbidden状态。请查看此处的文档:https://www.playframework.com/documentation/2.4.x/ScalaWebSockets

原始答案:

答案是,PlayFramework 2.2目前无法实现。常规HTTP状态不可行,因为响应需要是WebSocket(通过使用/ async),并且未实现WebSocket状态。我在他们的回购中提出了一个关于它的问题,我们需要等待未来的版本 - 或者有助于实现它: - )