Hcoap is a haskell CoAP library. See http://coap.technology/ for more information about the CoAP protocol. The library aims to support RFC 7252 specification, and currently only support non-secure CoAP transport.
The library is split into a high-level API in Network.CoAP.Server and Network.CoAP.Client, and a lower layer API in Network.CoAP.Message for working directly with CoAP messages.
main =
withSocketsDo $ do
sock <- socket AF_INET6 Datagram defaultProtocol
bindSocket sock (SockAddrInet6 5683 0 iN6ADDR_ANY 0)
server <- createServer (createUDPTransport sock) (\(request, _) -> do
let payload = Just (B.pack "{\"value\":\"foo\"}")
return (Response Content [ContentFormat ApplicationJson] payload))
runServer server
main = do
let request = Request { requestMethod = GET
, requestOptions = []
, requestPayload = Nothing
, requestReliable = True }
withSocketsDo $ do
sock <- socket AF_INET6 Datagram defaultProtocol
bindSocket sock (SockAddrInet6 0 0 iN6ADDR_ANY 0)
let transport = createUDPTransport sock
client <- createClient transport
uri <- parseURI "coap://[::1]:5683/hello"
response <- doRequest client uri request
putStrLn ("Got response: " ++ show response)
return ()