Rack で transfer-encoding: chunked なレスポンスを返す
each
を実装したオブジェクトを body として返してやるといい感じになる。 -> ならないかも。末尾参照(2019-10-28 17:25追記)
Streaming::Stream
のように each
を実装したオブジェクトを call
の戻り値に詰めている。
実際のレスポンスをみると Transfer-Encoding: chunked
であることがわかる。
またサーバ側のログからも wrapper end
のあとに Stream#each
が実行されていることがわかる。なので rack middleware 層を突き抜けた先で each が評価されている。
--raw
をつけて実際 chunk ごとにきてることも確認している。chunk が来た瞬間に curl が stdout に書いてくれるわけではないようで、すべて終わってから書かれるのが気になるところではあるがきっとだいじょうぶだろう。
gist9adfaa2234729ad51913b3169064dbc0
2019-10-28 17:25追記
すべて終わってから書かれるのが気になるところではあるがきっとだいじょうぶだろう。
chrome タブで開いてTTFBを見ると 3sec かかっているのでぜんぜん大丈夫じゃなかったっぽい