问题标签 [haskell-wai]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 如何在一个简单的 wai 应用程序中使用 wai-handler-devel
我有使用 wai 的基本“hello world”应用程序设置,并且想使用 wai-handler-devel,但我不确定如何去做,也找不到在 wai 项目中使用它的任何示例。
我需要做什么才能让 wai-handler-devel 使用基本的 wai 应用程序?
注意:如果您遇到“wai-handler-devel: command not found”问题,这里有一个修复(https://gist.github.com/1499226 )
haskell - 如何使用 WAI(原始请求正文)使用管道
我正在使用 scotty,它是 WAI 的一个类似 sinatra 的包装器。我想将原始请求正文作为字节字符串获取,以便可以将其解析为 json。以下是接近的。这类似于其他关于使用 WAI 使用 body 的问题,但不同的是因为我希望 body 作为字节串,并且因为我在不同的 monad 中,ActionM
这显然行不通,我想我需要某种升降机之类的东西,但我不知道该用什么。liftIO
是不对的,并且lift
给了我奇怪的错误。
http://hackage.haskell.org/packages/archive/scotty/0.0.1/doc/html/Web-Scotty.html
http://hackage.haskell.org/packages/archive/wai/latest/doc/html/Network-Wai.html
haskell - 使用长寿命资源(文件句柄)扭曲 Web 服务
我试图了解如何使用 warp 编写 Web 服务,该服务具有我希望从我的所有请求中访问的长期资源(即我希望资源在服务器的整个生命周期内都存在,而不是每个请求都存在)。我假设这是 ResourceT 的用途,但我不确定我实际上是如何做到这一点的。
我的特殊用途是我想公开一个文件句柄,我目前已经将它包裹在状态单子中。如果在使用 warp 和 ResourceT 时这没有意义,我很高兴改变这种方法。此代码的早期版本可以在代码审查中看到:https ://codereview.stackexchange.com/questions/9177/my-simple-haskell-key-value-file-store
提前致谢,
马特
haskell - Warp/WAI 的线程安全状态
我想编写一个 Web 服务器,将其状态存储在一个带有/的State
单子中。像这样的东西:wai
warp
当然,注释行不起作用。目的是将计数器存储在 state monad 中,并在每次请求时显示其递增的值。
另外,我如何获得线程安全?warp 是顺序还是并行运行我的中间件?
该州有哪些可用选项 - 除了IORef
我可以在这种情况下使用之外,还有什么可以使用的吗?
我知道国家提供安全,但似乎 wai 不允许国家。
我只需要一个可以从其他地方调用的非常简单的单线程 RPC。Haxr
包需要一个单独的 Web 服务器,这是一个矫枉过正。请参阅从 Node.JS 调用 Haskell - 它没有任何建议,因此我使用 Wai/Warp 和 Aeson 编写了一个简单的服务器。但似乎 WAI 旨在支持并发实现,因此它使事情变得复杂。
haskell - wai 的意外管道行为
我正在尝试使用 wai 编写一个非常微不足道的“回声”网络应用程序;我想要它做的就是回复发布给它的数据(我真的不关心该方法,但我正在使用 curl 并且 curl 正在使用 POST,所以这就是我想要的)。我的微不足道的网络服务器是这样的:
我期望这样做基本上是将请求正文与响应正文联系起来,这样当我运行curl --data @/usr/share/dict/words localhost:3000
; 它会向我吐出我的话。相反,它给出了一个空的身体。使用“-v”运行 curl 表明我的应用正在回复“200 OK”并且没有数据。我不确定我在这里做错了什么。
如果我用这个替换应用程序功能:
并添加一个 OverloadedStrings 杂注以允许“Hello World”部分工作,然后我确实看到我的应用程序将整个请求正文打印到标准输出,所以我知道 curl 正在正确提交数据。我还将“Hello World”打印到 curl 标准输出,所以我知道 curl 按我的预期工作。在将 requestBody 绑定到 ResponseSource 的地方,我一定做错了,但我没有看到。
haskell - 在哪里将“始终运行”线程添加到 Yesod 应用程序
我正在编写一个 Yesod 应用程序,但它还需要分叉几个非 Web 服务。(UDP监听器、TCP监听端口等)
拼接叉子的正确位置在哪里,这样可以无缝地工作,无论我的应用程序是在“yesod devel”中运行还是部署用于生产。
PS我真的只想添加一个伪Main,它将由任何一个通过WAI运行应用程序的网络服务器分叉(在服务启动时)。
http - 带有 WAI 的斐波那契 Web 服务
我正在尝试使用 WAI 编写一个简单的斐波那契网络服务器,但我就是不知道类型。这段代码是我想做的事情的本质,但它被破坏了。该getQueryArg
函数返回一个Maybe ByteString
,我想在我的fibHandler
函数中使用它。
- 如何正确处理
Maybe
我的fibHandler
? - 如何在 Maybe 上调用 putStrLn?我正在尝试
fmap
,但我似乎无法做到这一点。
[更新:此代码的工作副本在这里:https ://gist.github.com/3145317 ]
haskell - unwrapResumable 中的“释放”怎么办?
我写了一个简单的 Wai-to-uwsgi 代理,但在这样做时,我不得不使用unwrapResumable
. 这给出了Pipe
最终需要调用的解包和“释放”函数。release 函数的类型是ResourceT IO ()
,我想我想用我当前的资源注册它,但要做到这一点,我需要 release 只是IO ()
。我应该用释放功能做什么?
haskell - WAI 应用程序适用于 ghci,但不适用于 runhaskell
我编写了一个简单的 WAI 应用程序,它使用 ReaderT 来允许访问请求,如下所示:
handle
执行大部分处理的函数在哪里。然后我在我的应用程序中调用它:
但runhaskell main.hs
给了我以下内容:
这让我感到困惑有两个原因:
- 我不知道为什么它期待那种类型
- 调用
resp <- runReaderT (handle a) defaultRequest
在 GHCI 中有效!
为什么会这样?
windows - 在 Windows 中的 WAI 上运行 Warp 时出现问题
我为 (Wai) 上的 (Warp) 编写了一个简单的 Hello World 应用程序。它在 Ubuntu Linux 中运行良好,更复杂的应用程序也是如此。但我什至无法让这个 Hello World 应用程序在 Windows 中运行。我在 Windows 7 Home Premium SP1 32 位上使用 Haskell 平台(安装文件 2012.2.0.0)。
这是代码(适用于 Linux):
这些是加载代码并运行(主要)时的 GHCI 消息:
加载代码后,Web 服务器似乎没有运行。
我想我可能会遇到一些常见的问题 - 如果是这样,请告诉我。
提前感谢所有反馈。
(更新:正如下面的答案中所述,这些错误完全是由于 Ctrl-C 操作,杀死运行时,而不是问题中 Wai/Warp 的意外行为的一部分。)
如果我按 Ctrl-C 几次以爆发,我会收到这些消息,或其中一些消息: