【问题标题】:PlayFramework Websocket HTTP StatusPlayFramework Websocket HTTP 状态
【发布时间】:2013-10-28 21:33:58
【问题描述】:

我在 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

【问题讨论】:

    标签: scala playframework websocket playframework-2.2


    【解决方案1】:

    2015 年 10 月 7 日更新:

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

    原始答案:

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

    【讨论】:

    • websocket 状态码是在“PlayFramework 2.3 还是 PlayFramework 2.4”中实现的?如何在 Web 套接字响应中返回响应代码?
    • 我不知道这是否是您正在寻找的,但是当与演员一起使用它们时,有一种方法可以拒绝 websocket 连接:请参阅playframework.com/documentation/2.4.x/ScalaWebSockets
    猜你喜欢
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多