问题标签 [haskell-warp]
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 - 使用 Warp/WAI 处理 POST
如何使用Network.Wai
and从 POST 请求中检索数据Warp
?
比如说,我有一个简单的网页
当用户点击提交时,我该如何检索这些数据?我知道如何获取 GET 数据(queryString
)
例如
haskell - 使用长寿命资源(文件句柄)扭曲 Web 服务
我试图了解如何使用 warp 编写 Web 服务,该服务具有我希望从我的所有请求中访问的长期资源(即我希望资源在服务器的整个生命周期内都存在,而不是每个请求都存在)。我假设这是 ResourceT 的用途,但我不确定我实际上是如何做到这一点的。
我的特殊用途是我想公开一个文件句柄,我目前已经将它包裹在状态单子中。如果在使用 warp 和 ResourceT 时这没有意义,我很高兴改变这种方法。此代码的早期版本可以在代码审查中看到:https ://codereview.stackexchange.com/questions/9177/my-simple-haskell-key-value-file-store
提前致谢,
马特
haskell - 如何在守护模式下运行 Warp?
我一直在研究使用 Haskell Warp 构建的像素服务器,并且一直在努力研究如何在守护模式下运行它。
Warp 效果很好 - 我可以使用run
Network.Wai.Handler.Warp 来服务 HTTP,runTLS
使用 Network.Wai.Handler.WarpTLS 来服务 HTTPS,并且我可以通过生成一个新线程来运行两者:
我的问题是弄清楚如何使用MissingH (System.Daemon) 中的 detachDaemon 使我的服务器分离并在 Ubuntu 的后台运行。
在我的 Main.hs 中,我尝试添加detachDaemon
如下操作:
但是程序然后只是静默退出而没有错误,并且在我运行时没有任何显示ps -ef | grep snowhuskyd
。
我应该如何使用detachDaemon
- Warp 甚至可以吗?我找不到detachDaemon
在 Web 上使用的单个示例 - 任何帮助都将不胜感激!
haskell - 将 AJAX 与 warp HTTP 服务器一起使用
我在尝试了解 WARP 如何与客户端进行潜在交互时遇到了一些麻烦。如果我要通过 WARP 构建我的服务器端,并且有一个 Javascript 客户端。我可以假设使用 AJAX 作为客户端和服务器端之间的桥梁吗?
haskell - 如何将 MonadThrow 实例添加到 Warp 服务器中的 ResourceT Monad Transformer
我正在尝试使用 Warp 构建一个简单的反向代理服务器(主要是为了我自己的启发,因为还有很多其他现成的选项)。
到目前为止,我的代码大部分是从 Warp 文档中提取的(将输出写入文件只是一个临时测试,再次从文档中提取):
当我尝试在 ResourceT Monad 中运行 Network.HTTP 操作时,编译器正确地要求它是 MonadThrow 的一个实例。我的困难是如何将它添加到 monad 堆栈或将它的实例添加到 ResourceT。以下代码的编译器错误是:
如果我删除 HTTP 行,则不再需要 MonadThrow 实例,并且一切正常。
如果我将一个新的自定义 monad 定义为 MonadThrow 的实例,我如何让服务器使用它实际运行?寻找在我的堆栈中引入这种异常处理的正确方法(甚至只是满足编译器)。
谢谢/O
haskell - Warp/WAI 的线程安全状态
我想编写一个 Web 服务器,将其状态存储在一个带有/的State
单子中。像这样的东西:wai
warp
当然,注释行不起作用。目的是将计数器存储在 state monad 中,并在每次请求时显示其递增的值。
另外,我如何获得线程安全?warp 是顺序还是并行运行我的中间件?
该州有哪些可用选项 - 除了IORef
我可以在这种情况下使用之外,还有什么可以使用的吗?
我知道国家提供安全,但似乎 wai 不允许国家。
我只需要一个可以从其他地方调用的非常简单的单线程 RPC。Haxr
包需要一个单独的 Web 服务器,这是一个矫枉过正。请参阅从 Node.JS 调用 Haskell - 它没有任何建议,因此我使用 Wai/Warp 和 Aeson 编写了一个简单的服务器。但似乎 WAI 旨在支持并发实现,因此它使事情变得复杂。
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 几次以爆发,我会收到这些消息,或其中一些消息:
haskell - 处理 OPTIONS 方法的最简单方法是什么?
我正在 angular.js 中为我的 Yesod JSON 服务器编写一个客户端。在检查标头流量时,Chrome 似乎正在发送一个 OPTIONS 方法,我的处理程序拒绝了该方法。调查表明我应该发回这样的东西:
看着脚手架,我发现它makeApplication
开始了我想要遵循的路径:
最初,我认为我需要修改conf
,但据我所知,管理操作系统环境。全局更改响应标头最直接的地方在哪里?
haskell - 如何在处理下一个请求之前强制 yesod/warp 关闭打开的文件句柄?
我编写了一个小型服务器,它接受作为 POST 请求的注册并通过将它们附加到文件来持久化它们。一旦我将此服务器置于负载状态(我使用具有 50 个并发线程和 10 个重复计数的 Apache JMeter,并且帖子包含一个包含约 7k 文本数据的字段),我就会得到很多“资源繁忙,文件是锁定”错误:
这是代码的精简版本:
我故意编译了没有 的代码-threaded
,并且操作系统只显示一个正在运行的线程。尽管如此,在我看来,请求并没有完全序列化,并且在旧请求写入磁盘之前已经处理了一个新请求。
您能告诉我如何避免错误消息并确保成功处理所有请求吗?性能还不是问题。