hs-server-starter-0.1.2.0: Write a server supporting Server::Starter's protocol in Haskell

CopyrightCopyright (C) 2017- hiratara
LicenseGPL-3
Maintainerhiratara@cpan.org
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Network.ServerStarter.Socket

Description

Provides a utility to write server program which can be called via Perl's start_server program using Haskell.

Since the listenAll function returns a listened Socket, please call accept on it.

  import qualified Network.ServerStarter.Socket as Starter
  import qualified Network.Socket               as Socket
  import qualified Network.Wai                  as Wai
  import qualified Network.Wai.Handler.Warp     as Warp

  main :: IO ()
  main = do
    (socket:_) <- Starter.listenAll
    Socket.SockAddrInet port _ <- Socket.getSocketName socket
    let setting = Warp.setPort (fromEnum port)
                $ Warp.defaultSettings
    Warp.runSettingsSocket setting socket app

  app :: Wai.Application
  app = ...

Then run start_server and access to http://localhost:12345 .

  $ start_server --port 12345 -- stack exec server-starter-warp-example
Synopsis

Documentation

listenAll :: IO [Socket] Source #

The listenAll function takes a file descriptor from the environment variable SERVER_STARTER_PORT and returns it wrapped in Socket type. With return value as an argument, you can call accept as it is.