0

我正在使用 Play Framework 控制器公开的 WebSocket 端点。然而,我的客户将发送一个大字节数组,我对如何在我的 Iteratee 中处理这个感到有点困惑。这是我所拥有的:

def myWSEndPoint(f: String => String) = WebSocket.async[Array[Byte]] { request =>

  Akka.future {
    val (out, chan) = Concurrent.broadcast[Array[Byte]]

    val in: Iteratee[Array[Byte], Unit] = Iteratee.foreach[Array[Byte]] {
      // How do I get the entire file?
    }

    (null, null)
  }

}

从上面的代码中可以看出,我一直坚持如何将字节数组作为一个请求处理并将响应作为字符串发送回?我的困惑在于 Iteratee.foreach 调用。这 foreach 是字节数组上的 foreach 还是我从客户端作为字节数组发送的请求的全部内容?令人困惑!

有什么建议么?

4

1 回答 1

0

这要看情况。您的客户端是一次发送所有二进制文件,还是(明确)逐块发送?

-> 如果一次全部完成,那么所有内容都将在第一个块中(因此为什么要使用 websocket?为什么要使用 Iteratee?使用 BodyParser 的操作可能会更有效)。

-> 如果它是逐块的,你必须保留你收到的每个块,并在关闭时将它们连接起来(关闭时,除非你有另一种方式让客户说:“嘿,我完成了!”)。

于 2014-02-25T11:53:12.707 回答