@@ -8,7 +8,7 @@ import Control.Concurrent.Chan
88import Network.Wai.Handler.Warp (run)
99import Network.Wai.Middleware.Gzip (gzip, def)
1010import Network.Wai
11−import Network.HTTP.Types (statusOK)
11+import Network.HTTP.Types (status200)
1212import Data.Time.Clock.POSIX
1313import Blaze.ByteString.Builder.Char.Utf8 (fromString)
1414import qualified Data.Conduit as C
@@ -18,8 +18,8 @@ import Network.Wai.EventSource
1818app :: Chan ServerEvent -> Application
1919app chan req =
2020 case pathInfo req of
21− [] -> return $ ResponseFile statusOK [("Content-Type", "text/html")] "static/index.html" Nothing
22− ["esold"] -> eventSourceApp chan req
21+ [] -> return $ ResponseFile status200 [("Content-Type", "text/html")] "static/index.html" Nothing
22+ ["esold"] -> eventSourceAppChan chan req
2323 ["eschan"] -> eventSourceAppChan chan req
2424 ["esio"] -> eventSourceAppIO eventIO req
2525 ["essrc"] -> eventSourceAppSource eventSource req
@@ -39,18 +39,17 @@ eventIO = do
3939 Nothing
4040 [fromString . show $ time]
4141
42−eventSource :: C.Source IO ServerEvent
43−eventSource = C.sourceState () (const pull)
44− where
45− pull = do
42+eventSource :: C.Source (C.ResourceT IO) ServerEvent
43+eventSource = forever $ do
4644 time <- liftIO $ do
4745 threadDelay 1000000
4846 getPOSIXTime
49− return $ C.StateOpen () $ ServerEvent (Just $ fromString "source")
47+ C.yield $ ServerEvent (Just $ fromString "source")
5048 Nothing
5149 [fromString . show $ time]
5250
5351main = do
5452 chan <- newChan
5553 _ <- forkIO . eventChan $ chan
56− run 8000 (gzip def $ app chan)
54+ run 8080 (gzip def $ app chan)
55+