- 関数型プログラミング言語Haskell Part29 [転載禁止]©2ch.net
630 :デフォルトの名無しさん[sage]:2015/10/18(日) 17:32:04.94 ID:IQSF+r4c - wai パッケージのライブラリの使い方について質問です。
Web アプリにおけるストリーム レスポンスがどのように働くのか調べているのですが、 挙動がいまいちよく分かりません。 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 が表示されます。 この挙動を見てストリーミングの意味がよく分からなくなったのですが、こういうものですか?
| - 関数型プログラミング言語Haskell Part29 [転載禁止]©2ch.net
631 :デフォルトの名無しさん[sage]:2015/10/18(日) 17:43:42.05 ID:IQSF+r4c - >>630
すいません、コードが変で、余計なものもありました。 import Blaze.ByteString.Builder (fromByteString) import Control.Concurrent (threadDelay) import Network.HTTP.Types (status200) import Network.Wai (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" これが >>630 のように期待通りになりません。 「期待」の方が間違っているでしょうか?
|
|