packages feed

servant-websockets-1.1.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 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