on master help sign in
Fix an example
aa6faceMichael Snoyman
wai-eventsource/src/Main.hs+8−9
@@ -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
39 Nothing
39 Nothing
40 [fromString . show $ time]
40 [fromString . show $ time]
41
41
42−eventSource :: C.Source IO ServerEvent
42+eventSource :: C.Source (C.ResourceT IO) ServerEvent
43−eventSource = C.sourceState () (const pull)
43+eventSource = forever $ do
44− where
45− pull = 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")
50 Nothing
48 Nothing
51 [fromString . show $ time]
49 [fromString . show $ time]
52
50
53main = do
51main = do
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)
55+