2

テンプレートを使用して応答を生成する場合、テンプレートが計算され、結果が送信されます。

応答を構築している間にテンプレートの結果をストリーミングすることは可能でしょうか?

4

1 に答える 1

3

ストリーミングは結果を部分的に送信することで機能するため、テンプレートは応答の一部のみを構築する必要があります。

結果部分をモデル化する型Enumerator[Part]where isがあると仮定します。Partこの列挙子は、たとえば、Web サービス呼び出しまたはデータベース クエリから構築できます。

次に、これらの応答パーツを html パーツに変換する必要があります。を使用してそれを行うことができますEnumeratee[Part, Html]

最後に、feedHTTP 結果のメソッドを使用して、enumeratee と組み合わせた列挙子を渡します。

上記の説明を示す (テストされていない) 例を次に示します。

def stream = Action { implicit request =>
  val stream: Enumerator[Part] = …
  val toHtml = Enumeratee.map[Part] { part =>
    views.html.part(part)
  }
  Ok.feed(stream &> toHtml)
}
于 2012-06-06T21:58:33.987 に答える