Skip to content

Instantly share code, notes, and snippets.

@qnikst
Last active August 29, 2015 14:03
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 qnikst/dc63dc0a5e7be02535e9 to your computer and use it in GitHub Desktop.
Save qnikst/dc63dc0a5e7be02535e9 to your computer and use it in GitHub Desktop.
main = withSocketsDo $
eventChan <- newChan
tm <- newTimerIO
forever $
bracket (createNetwork tm chan)
(threadKill) $ waitTimer tm >> resetTimer tm
where
createNet tm chan = bracket (connect) (sClose) (network tm chan)
connect = do
addrinfos <- getAddrInfo Nothing (Just "") (Just "3000")
let serveraddr = head addrinfos
sock <- socket (addrFamily serveraddr) Stream defaultProtocol
connect sock (addrAddress serveraddr)
return tm socket
network tm chan sock = forkIO $ forever $ do
msg <- decode <$> recv sock 1024 -- XXX: really read message
resetTimer tm
writeChan chan msg
go = forever $ readChan eventChan >>= processEvent
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment