Uli*_*ler 9 haskell unix-socket haskell-warp
此处列出的示例代码显示了如何仅在特定主机上进行warp侦听.
此外,这篇文章展示了一些关于如何在Haskell中使用unix域套接字的基础知识.
我如何结合这两种方法,以使warp监听(即绑定)特定的unix域套接字(比方说warp.sock)?
注意:这个问题故意没有研究,因为它回答了Q&A-Style.
Uli*_*ler 11
您可以使用runSettingsSocket一个AF_UNIX插座:
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai (responseLBS)
import Network.Wai.Handler.Warp
import Network.Socket
import Network.HTTP.Types (status200)
import Network.HTTP.Types.Header (hContentType)
main = do
let port = 3000
-- Open the socket
sock <- socket AF_UNIX Stream 0
bind sock $ SockAddrUnix "warp.sock"
listen sock maxListenQueue
-- Run the server
let settings = defaultSettings { settingsPort = port }
runSettingsSocket settings sock app
-- Cleanup: Close socket
close sock
app req f = f $
responseLBS status200 [(hContentType, "text/plain")] "Hello world!"
Run Code Online (Sandbox Code Playgroud)
请注意,这显然只适用于unixoid平台.