@@ -8,7 +8,7 @@ import Control.Concurrent.Chan
8import Network.Wai.Handler.Warp (run)
8import Network.Wai.Handler.Warp (run)
9import Network.Wai.Middleware.Gzip (gzip, def)
9import Network.Wai.Middleware.Gzip (gzip, def)
10import Network.Wai
10import Network.Wai
11−import Network.HTTP.Types (statusOK)
11+import Network.HTTP.Types (status200)
12import Data.Time.Clock.POSIX
12import Data.Time.Clock.POSIX
13import Blaze.ByteString.Builder.Char.Utf8 (fromString)
13import Blaze.ByteString.Builder.Char.Utf8 (fromString)
14import qualified Data.Conduit as C
14import qualified Data.Conduit as C
@@ -18,8 +18,8 @@ import Network.Wai.EventSource
18app :: Chan ServerEvent -> Application
18app :: Chan ServerEvent -> Application
19app chan req =
19app chan req =
20 case pathInfo req of
20 case pathInfo req of
21− [] -> return $ ResponseFile statusOK [("Content-Type", "text/html")] "static/index.html" Nothing
21+ [] -> return $ ResponseFile status200 [("Content-Type", "text/html")] "static/index.html" Nothing
22− ["esold"] -> eventSourceApp chan req
22+ ["esold"] -> eventSourceAppChan chan req
23 ["eschan"] -> eventSourceAppChan chan req
23 ["eschan"] -> eventSourceAppChan chan req
24 ["esio"] -> eventSourceAppIO eventIO req
24 ["esio"] -> eventSourceAppIO eventIO req
25 ["essrc"] -> eventSourceAppSource eventSource req
25 ["essrc"] -> eventSourceAppSource eventSource req
@@ -39,18 +39,17 @@ eventIO = do
40 [fromString . show $ time]
40 [fromString . show $ time]
42−eventSource :: C.Source IO ServerEvent
42+eventSource :: C.Source (C.ResourceT IO) ServerEvent
43−eventSource = C.sourceState () (const pull)
43+eventSource = forever $ do
46 time <- liftIO $ do
44 time <- liftIO $ do
47 threadDelay 1000000
45 threadDelay 1000000
48 getPOSIXTime
46 getPOSIXTime
49− return $ C.StateOpen () $ ServerEvent (Just $ fromString "source")
47+ C.yield $ ServerEvent (Just $ fromString "source")
51 [fromString . show $ time]
49 [fromString . show $ time]
54 chan <- newChan
52 chan <- newChan
55 _ <- forkIO . eventChan $ chan
53 _ <- forkIO . eventChan $ chan
56− run 8000 (gzip def $ app chan)
54+ run 8080 (gzip def $ app chan)