wai.hs 875 B

123456789101112131415161718192021222324252627
  1. {-# LANGUAGE OverloadedStrings #-}
  2. import Data.Aeson
  3. import Data.Text (Text)
  4. import Control.Monad (replicateM_)
  5. import Network.HTTP.Types (status200)
  6. import qualified Network.Wai.Handler.Warp as Warp
  7. import System.Posix.Process (forkProcess)
  8. import Data.Conduit.Network (bindPort)
  9. import Network.Wai
  10. import System.Environment (getArgs)
  11. main :: IO ()
  12. main = do
  13. socket <- bindPort 8000 "*"
  14. [cores, _] <- getArgs
  15. let run = Warp.runSettingsSocket Warp.defaultSettings
  16. { Warp.settingsPort = 8000
  17. , Warp.settingsHost = "*"
  18. , Warp.settingsOnException = const $ return ()
  19. } socket app
  20. replicateM_ (read cores - 1) $ forkProcess run
  21. run
  22. where
  23. app _ = return $ responseLBS
  24. status200 [("Content-Type", "application/json")] $
  25. encode $ object ["message" .= ("Hello, World!" :: Text)]