问题标签 [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 - 将标准输入流式传输到 Wai.EventSource
我想使用text/event-stream
. Network.Wai.EventSource看起来是个不错的选择。
我尝试使用此代码:
哪个(我认为)可以:
- 将标准输入读取为惰性字节流
- 将 ByteStream 拆分为行
- 为所有行生成一个 ServerEvent(这感觉不对 - 大概应该有多个事件?)
- 构建一个 WAI 应用程序
IO ServerEvent
- 将应用程序绑定到端口 1337
当我运行它(例如使用ping -c 5 example.com | stack exec test-exe
)时,它不会响应,直到整个 stdin 被读取。
如何构建一个每次从标准输入读取一行时刷新 HTTP 连接的 Wai 应用程序?
haskell - 在 Haskell 的 Wai/Warp 中处理 POST 请求
我有一个 wai/warp 应用程序。如何处理发布请求?我有这个:
如何指定some_post_req
必须是 POST?
haskell - 删除 Yesod/Warp 中的服务器响应标头
如何删除Server
Yesod 中的 HTTP 响应标头?我找到了负责设置该标头的代码,但我不知道下一步该做什么。我知道我可以使用 将标头值替换为空字符串addHeader "Server" ""
,但我更愿意完全删除它。
haskell - 强制 Yesod 使用更新版本的 Warp
我使用 Stack 安装了 Yesod。它目前使用 Warp v3.2.11.1,但我希望它使用GitHub 上可用的最新版本(尚未发布)。我在我的文件中添加了以下内容stack.yaml
:
当我导入WarpApplication.hs
并打印Warp版本时,我得到3.2.11.2,但是当我向我的服务器发出HTTP请求时,“Server”响应头是“Warp/3.2.11.1”,这意味着Yesod仍在使用旧版本的 Warp。如何强制 Yesod 使用较新的版本?
haskell - 如何在 Wai/Warp 中提供 images/css/js 文件夹?
我有这个简单的 Wai/Warp 应用程序
如何将文件夹“images”添加到路由中,以便任何图像我都可以将 index.html 中的任何图像称为“images/something.jpg”?我知道如何添加确切的路线,但在这里我需要添加整个文件夹。
haskell - 在 Hasekll Spock 中为静态资产或图像创建路由
我从其网站上获取了这个基本的 Spock 应用程序:
我有一个 html 页面,我可以像这样返回:
然而,一个 html 页面包含一些“img”标签。我如何需要创建一条路线才能解析图像?说,图像是文件夹“img”中的位置。
haskell - Spock 或 Wai/Warp 和 HTTPS
我有一个必须通过 HTTPS 访问的 Spock 网站。我该如何正确设置它?我认为它应该与 Wai/Warp 的方式相同,但仍然没有最新的信息。
javascript - Haskell WARP/WAI 服务器无法响应来自 Android 嵌入式 WebView 的 AJAX 调用
更新 3当点击端点http://httpbin.org/user-agent时,请求成功返回。所以我的 Haskell Warp+WAI 应用服务器出了点问题。
有什么想法可以使服务器 API 调用适用于大多数浏览器,但不适用于 Android WebView?
澄清一下,我没有做任何跨域请求。我在这里看到数百个关于此的问题,但我的 AJAX 请求是针对 WebView 已加载的同一个域。
更新 2而不是 jQuery,我使用了更基本的xhr方法,如下所示:
仍然没有运气。xhr.responseText为空白,xhr.status为0。
我想知道我的服务器是否有问题?我正在使用一个不寻常的服务器,即带有 WAI 的基于 Haskell 的 WARP。...但是为什么在其他所有浏览器中一切正常?
更新我做了一些调试,这是我在下面显示的 AJAX 调用中遇到的错误(一个基本的“服务器启动了吗?”GET 查询):
错误:NetworkError:无法在“XMLHttpRequest”上执行“发送”:无法加载“ http://www.example.net:2753/ping ”
不用说确切的 URL(我正在使用的真实 URL,而不是示例)在任何移动或桌面浏览器中都可以正常加载 - 只有 Android WebView 有这个问题!
我有一个简单的 Android 应用程序;只是一个加载远程 URL(不是本地资源)的 WebView。它工作正常,除了我所有的 AJAX 调用立即调用它们的错误回调。我正在三星 Galaxy S6 上进行测试,并将应用程序构建到 SDK 21。
这是我的第一个 AJAX 调用(失败)的样子;其他人使用相同的属性:
当然,transmitScore()和fail()在范围内的其他地方定义。
这是我的 WebView 的设置:
任何想法出了什么问题?AJAX 调用在桌面 Chrome 和 Android Chrome 中运行良好。
我在这里看到了很多关于 AJAX 调用需要跨域权限的本地资源文件的问题,但这不是我的情况。所有资源都在远程服务器上,所有 AJAX 调用都转到它。
我也尝试将我的WebView设置为使用WebChromeClient,但没有任何区别。我相信现在它是WebViews的默认值。在 AJAX 调用中,我尝试了async和cache的四种可能组合;没有工作。
haskell - 使用 ResponseFile 时,如何强制 warp 使用 200 以外的状态码?
在尝试生成自定义 404 错误时,我尝试使用responseFile notFound404 [("Content-Type","text/html")] "404.html" Nothing
. 但是,如果我的文件系统中存在“404.html”,Warp 会发送状态码为 200 的数据。
支持 wai 接口的服务器是否期望这种行为?如果是这样,为什么 responseFile 有一个状态参数?
haskell - 如何使 WARP 服务器终止?
我有一个 HTTP 应用程序服务器,在某些条件下处理某个请求时需要退出(以便由主管重新启动)。
给定一个主要的:
和一个处理程序,例如:
在提供 500 响应后,如何使流程结束?