[Haskell] Hello world web-server
От: Димчанский Литва http://dimchansky.github.io/
Дата: 20.06.13 09:19
Оценка:
Хочется провести синтетический тест при разной нагрузке веб-сервера, который просто возвращает "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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.