scala - PlayFramework Websocket HTTP 状态

标签 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

最佳答案

2015 年 10 月 7 日更新:

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

原始答案:

答案是,目前无法使用 PlayFramework 2.2。常规 HTTP 状态不可行,因为响应需要是 WebSocket(通过使用/异步),并且未实现 WebSocket 状态。我在他们的 repo 协议(protocol)中提出了一个关于它的问题,我们需要等待 future 的发布——或者为实现它做出贡献:-)

关于scala - PlayFramework Websocket HTTP 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19645491/

相关文章:

scala - 我可以在 Slick (Play) 中使用 Scala List 吗?

javascript - Websocket 的正确方法

servlets - Jetty 7 的 websocket、servlet 和资源处理程序的嵌入式配置

scala - 为什么在使用模式查询时所有字段都为空?

arrays - 求数组中除0之外的最小值

Scala View 过滤器不懒惰?

scala - 无法使用flink在Scala中实例化用户功能

java - 无法从Java中的nginx反向代理获取远程IP

java - 在运行时替换某些方法的内容

flutter - WebSocketException : Connection to url.。没有升级到websocket。它在角度中工作正常,但在 flutter 中却不能,为什么?