質問

Playフレームワークコントローラで公開されているWebSocketエンドポイントを使用しています。私のクライアントは大きなバイト配列を送ります、そして私は私のiterateeでこれを処理する方法について少し混乱しています。これが私が持っているものです:

DEF MyWSENDPOINT(F:String=> String)= WebSocket.async [Array [Byte]] { 要求=>

  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)
  }
.

}

上記のコードで見ることができるように、私はバイト配列を1つの要求として処理する方法の行に立ち往生していますか?私の混乱はiterateeにあります。これは、バイト配列または私が私のクライアントからバイト配列として送信する要求のコンテンツ全体でforeachを送りますか?それは混乱しています!

任意の提案?

役に立ちましたか?

解決

well ...それは異なります。クライアントは一度にすべてのバイナリを送信していますか、それとも(明示的に)チャンクでチャンクされていますか?

- >それが一度になっているなら、すべてが最初のチャンクになります(したがって、WebSockete?iteratee?BodyParserを使ったアクションはおそらくそれにとってより効率的になるでしょう)。

- >チャンクごとにチャンクされている場合は、閲覧しているすべてのチャンクを保存し、クローズに連結する必要があります(クライアントが「ねえやめました」という方法がない限り、「閉じる」。/ P>

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top