テンプレートを使用して応答を生成する場合、テンプレートが計算され、結果が送信されます。
応答を構築している間にテンプレートの結果をストリーミングすることは可能でしょうか?
テンプレートを使用して応答を生成する場合、テンプレートが計算され、結果が送信されます。
応答を構築している間にテンプレートの結果をストリーミングすることは可能でしょうか?
ストリーミングは結果を部分的に送信することで機能するため、テンプレートは応答の一部のみを構築する必要があります。
結果部分をモデル化する型Enumerator[Part]
where isがあると仮定します。Part
この列挙子は、たとえば、Web サービス呼び出しまたはデータベース クエリから構築できます。
次に、これらの応答パーツを html パーツに変換する必要があります。を使用してそれを行うことができますEnumeratee[Part, Html]
。
最後に、feed
HTTP 結果のメソッドを使用して、enumeratee と組み合わせた列挙子を渡します。
上記の説明を示す (テストされていない) 例を次に示します。
def stream = Action { implicit request =>
val stream: Enumerator[Part] = …
val toHtml = Enumeratee.map[Part] { part =>
views.html.part(part)
}
Ok.feed(stream &> toHtml)
}