Хочется провести синтетический тест при разной нагрузке веб-сервера, который просто возвращает "Hello world".
Тем, кто разбирается в Haskell, посмотрите код, можно ли что-то улучшить?
keep-alive вставил специально для ab утилиты, иначе соединения обрывает и кип-алайва не получается..
Думаю сравнить насколько он отстанет под Windows от HTTPListener'а (в .NET), который использует http.sys.
Понятно, что тест слишком синтетический и далек от практических задач, но все же..
module Main where
import Network.Wai ( Application, Response( ResponseBuilder ) )
import Network.HTTP.Types ( status200 )
import Network.HTTP.Types.Header ( hContentType, hContentLength, hConnection )
import Network.Wai.Handler.Warp ( run )
import Blaze.ByteString.Builder (fromByteString)
import qualified Data.ByteString.Char8 as BS ( pack, length )
application :: Application
application _ = return $
ResponseBuilder status200 [(hContentType, BS.pack "text/plain"),
(hContentLength, BS.pack bodyLen ),
(hConnection, BS.pack "keep-alive")]
$ fromByteString body
where body = BS.pack "Hello World"
bodyLen = show . BS.length $ body
main :: IO ()
main = run 8080 application
... << RSDN@Home 1.2.0 alpha 5 rev. 72>>