関数型プログラミング言語Haskell Part29 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0630デフォルトの名無しさん
2015/10/18(日) 17:32:04.94ID:IQSF+r4cWeb アプリにおけるストリーム レスポンスがどのように働くのか調べているのですが、
挙動がいまいちよく分かりません。
import Blaze.ByteString.Builder (Builder, fromByteString)
import Control.Concurrent (threadDelay)
import Network.HTTP.Types (status200)
import Network.Wai (Application, responseStream)
import Network.Wai.Handler.Warp (run)
main = run 3000 app
app _ sendResponce = sendResponse $ responseStream
status200
[("content-Type", "text/plain")]
content
content = send frush = do
send $ fromByteString "A\n"
flush
threadDelay 5000000
send $ fromByteString "B\n"
これを runhaskell で実行して firefox でアクセスしてみました。
私の期待通りなら、ブラウザ画面に A が表示されてから 5 秒後に B が表示されるはずですが、
実際は画面が空白のまま 5 描画が経過した後に A と B が表示されます。
この挙動を見てストリーミングの意味がよく分からなくなったのですが、こういうものですか?
■ このスレッドは過去ログ倉庫に格納されています