@@ -5,17 +5,22 @@ import ProjectM36.Server
55import Control.Concurrent
66import qualified Network.WebSockets as WS
77import Network.Transport.TCP (decodeEndPointAddress)
8+import Debug.Trace
89
910main :: IO ()
1011main = do
1112 -- launch normal project-m36-server
1213 addressMVar <- newEmptyMVar
1314 serverConfig <- parseConfig
14− let serverHost = bindHost serverConfig
15− _ <- forkFinally (launchServer serverConfig (Just addressMVar)) failureHandler
15+ --usurp the serverConfig for our websocket server and make the proxied server run locally
16+ let wsHost = bindHost serverConfig
17+ wsPort = bindPort serverConfig
18+ serverHost = "127.0.0.1"
19+ serverConfig' = serverConfig {bindPort = 0, bindHost = serverHost}
20+ _ <- forkFinally (launchServer serverConfig' (Just addressMVar)) failureHandler
1621 --wait for server to be listening
1722 address <- takeMVar addressMVar
1823 let Just (_, serverPort, _) = decodeEndPointAddress address
1924 --this built-in server is apparently not meant for production use, but it's easier to test than starting up the wai or snap interfaces
20− WS.runServer "0.0.0.0" 8888 (websocketProxyServer (read serverPort) serverHost)
25+ WS.runServer (traceShowId wsHost) (traceShowId (fromIntegral wsPort)) (websocketProxyServer (read serverPort) serverHost)
2126