packages feed

servant-websockets-1.0.0: examples/Echo.hs

{-# LANGUAGE DataKinds         #-}
{-# LANGUAGE TypeOperators     #-}

module Main where

import Servant.API.WebSocketConduit (WebSocketConduit)

import Data.Aeson               (Value)
import Data.Conduit             (Conduit)
import Data.Monoid              ((<>))
import Network.Wai              (Application)
import Network.Wai.Handler.Warp (run)
import Servant                  (Proxy (..), Server, serve)

import qualified Data.Conduit.List as CL


type API = WebSocketConduit Value Value

startApp :: IO ()
startApp = do
  putStrLn "Starting server on http://localhost:8080"
  run 8080 app

app :: Application
app = serve api server

api :: Proxy API
api = Proxy

server :: Server API
server = echo

echo :: Monad m => Conduit Value m Value
echo = CL.map id

main :: IO ()
main = startApp