[Haskell-cafe] happstack simpleHTTP & state monad
Corentin Dupont
corentin.dupont at gmail.com
Thu Aug 30 19:29:20 CEST 2012
Hi all,
I'm trying to make a web server that manages its own state. The user can
issue commands that modifies the state.
I did like below but unfortunatly the state is not keep after a command is
issued...
What is the right way to do it? Is there any example sites with an internal
state with happstack?
*data Game = (the state of my game)
type NomicServer = ServerPartT (StateT Game IO)
launchWebServer :: Game -> IO ()
launchWebServer initialState = do
putStrLn "Starting web server...\nTo connect, drive your browser to \"
http://localhost:8000/Login\""
d <- getDataDir
simpleHTTP' unpackStateT nullConf $ server d
server :: FilePath -> ServerPartT (StateT Game IO) Response
server d sh = mconcat [fileServe [] d, do
decodeBody (defaultBodyPolicy "/tmp/"
4096 4096 4096)
html <- implSite "http://localhost:8000/"
"" nomicSite
return $ toResponse html]
unpackStateT:: Game -> UnWebT (StateT Game IO) Response -> UnWebT IO
Response
unpackStateT g w = evalStateT w g
--handler for web routes
nomicSite :: Site PlayerCommand (NomicServer Html)
nomicSite = setDefault (Noop 0) Site {
handleSite = \f url -> unRouteT (routedNomicCommands url) f
, formatPathSegments = \u -> (toPathSegments u, [])
, parsePathSegments = parseSegments fromPathSegments
}*
Thanks a lot,
Corentin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20120830/0892d2c4/attachment.htm>
More information about the Haskell-Cafe
mailing list