Skip to content

Instantly share code, notes, and snippets.

@qrilka

qrilka/Events.hs Secret

Last active December 12, 2015 07:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save qrilka/61c06822fe91a2e41c42 to your computer and use it in GitHub Desktop.
Save qrilka/61c06822fe91a2e41c42 to your computer and use it in GitHub Desktop.
{-# LANGUAGE OverloadedStrings #-}
module Handler.Events where
import Control.Concurrent.STM
import Data.Text as T
import Import
import Network.Wai
import Network.Wai.EventSource (ServerEvent (..), eventSourceAppIO)
getEventsR :: Handler ()
getEventsR = do
$(logDebug) "EVENTS"
chan0 <- getEventsChan <$> getYesod
chan <- liftIO $ atomically $ dupTChan chan0
req <- waiRequest
runInnerHandler <- handlerToIO
res <- lift $ (eventSourceAppIO (runInnerHandler $ readCh chan)) req
sendWaiResponse res
readCh :: TChan ServerEvent -> Handler ServerEvent
readCh chan = do
$(logDebug) "------READING CHANNEL------"
liftIO $ atomically $ readTChan chan
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment