Description
CoAP implementation for Haskell.
Description
CoAP library for writing CoAP clients, servers or just for decoding and encoding CoAP messages. The Network.CoAP.Server and Network.CoAP.Client modules allows building CoAP servers and clients on top of a messaging layer which provides reliable transport of CoAP requests/responses.
README.md
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.
Example server
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
Example client
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 ()