summaryrefslogtreecommitdiffhomepage
path: root/Server.hs
diff options
context:
space:
mode:
authorJoey Hess <joeyh@joeyh.name>2017-04-21 13:25:51 -0400
committerJoey Hess <joeyh@joeyh.name>2017-04-21 13:25:51 -0400
commit360d8ac4601dc5b48c22eeb93eb1853cee99e6c9 (patch)
tree57b1e55c818dc45862cb5375e541f7efee829530 /Server.hs
parente336a4fdf3d55f01b8c2871ceb906544a493eeb7 (diff)
downloaddebug-me-360d8ac4601dc5b48c22eeb93eb1853cee99e6c9.tar.gz
http server scaffolding
Diffstat (limited to 'Server.hs')
-rw-r--r--Server.hs26
1 files changed, 26 insertions, 0 deletions
diff --git a/Server.hs b/Server.hs
new file mode 100644
index 0000000..5d919b8
--- /dev/null
+++ b/Server.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module Server where
+
+import CmdLine
+
+import Network.Wai
+import Network.Wai.Handler.Warp
+import Network.Wai.Handler.WebSockets
+import qualified Network.WebSockets as WS
+import Network.HTTP.Types
+import Data.Text (Text)
+
+server :: ServerOpts -> IO ()
+server o = run (serverPort o) app
+
+app :: Application
+app = websocketsOr WS.defaultConnectionOptions websocketApp webapp
+ where
+ webapp _ respond = respond $
+ responseLBS status400 [] "Not a WebSocket request"
+
+websocketApp :: WS.ServerApp
+websocketApp pending_conn = do
+ conn <- WS.acceptRequest pending_conn
+ WS.sendTextData conn ("Hello, client!" :: Text)