net-mqtt-0.2.0.0: app/Main.hs
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Concurrent (threadDelay)
import Control.Concurrent.Async (async, cancel)
import Control.Monad (forever)
import Network.MQTT.Client
main :: IO ()
main = do
mc <- runClient mqttConfig{_hostname="localhost", _port=1883, _connID="hasqttl",
-- _cleanSession=False,
_lwt=Just $ mkLWT "tmp/haskquit" "bye for now" False,
_msgCB=Just showme}
putStrLn "connected!"
print =<< subscribe mc [("oro/#", QoS0), ("tmp/#", QoS2)]
p <- async $ forever $ publish mc "tmp/mqtths" "hi from haskell" False >> threadDelay 10000000
putStrLn "Publishing at QoS > 0"
publishq mc "tmp/q" "this message is at QoS 2" False QoS2
putStrLn "Published!"
print =<< waitForClient mc
cancel p
where showme _ t m = print (t,m)