问题标签 [mochiweb]

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.

0 投票
1 回答
5060 浏览

json - Erlang:元组列表转换为 JSON

我有一个元组列表,它们是 http 标头。我想将列表转换为 JSON 对象。我尝试 mochijson2 但无济于事。

所以我有以下内容:

并且想要这个(二进制 JSON 字符串):

我试试这个,其中 A 是元组的原始列表:

我怀疑我需要将它转换成 mochijson2 可以更好地解释的格式。然后转换成二进制。或者想办法将所有字符表示为字符串(而不是将一些字符表示为整数列表)。

如果您能用一些示例代码为我指明正确的方向,我们将不胜感激。

0 投票
3 回答
4160 浏览

erlang - 如何在 Erlang/OTP 中使用 application:get_env()?

我创建了一个 mochiweb 实例

myserver_web.erl我能够访问应用程序配置

但是room.erl,我无法访问应用程序配置(特别是env列表)。

主管没有启动房间,我也不想要它。

我是 OTP 的新手,我意识到我可能在做一些愚蠢的事情,但我非常感谢任何人的帮助。

干杯!

0 投票
1 回答
655 浏览

http - 在 Erlang 中读取接收到的 HTTP 请求的主体

我一直在研究 Mochiweb,但是当我通过套接字接收请求时,我找不到读取正文的方法。

我不仅限于 Mochiweb,任何其他 HTTP 库都对我有好处。

我也试过gen_tcp:listen(Port, [{packet, http}]),这样我可以在接收 HTTP 请求时读取正文/标题,但我必须手动处理响应并保持套接字打开以接收更多请求,所以我不喜欢使用这个解决方案。

我的意图是接收大型机构的请求,而不是等待接收全身以便开始阅读/处理它们。

0 投票
3 回答
870 浏览

http - 如何测试 mochiweb 应用程序?

我想对我的 mochiweb 应用程序进行高级测试,就像可以在 Python 中使用 WebTest、在 Django 中使用测试客户端以及在 Ruby on Rails 中进行功能或集成测试一样。我不太挑剔如何去做。基本上我只想发送或模拟 HTTP 请求并对结果做出断言。

我重构了我的代码,以便我的请求处理程序不会调用Req:respond()自己,而是返回一个 tuple {Code, Headers, Body}。这允许我使用 构建虚拟请求 mochiweb_request:new(),将它们传递给我的请求调度程序并使用 EUnit 对结果进行断言:

现在我的问题是如何测试 POST 请求。我在 mochiweb 中没有找到任何可以让我这样做的东西。从阅读mochiweb代码来看,似乎在Req:parse_post()调用时会触发对套接字的读取。我在src/mochiweb.erl中发现了一些有趣的测试代码。显然,这涉及构建 HTTP 消息,将它们写入套接字并读取响应。我试图在我自己的测试代码中做到这一点,但几个小时后我没有成功。我开始怀疑我是否朝着正确的方向前进。也许我需要将更多的功能与 HTTP 管道分离,即。不打电话Req:parse_post()从我的请求处理程序中。我正在考虑的另一个解决方案是使用第三方 Web 测试库,不必用 Erlang 编写。也许是 Ruby 或 Python 甚至 Selenium 中的东西。

那么,您会推荐什么解决方案来对 mochiweb 应用程序进行功能或集成测试?

0 投票
4 回答
6382 浏览

mochiweb - mochiweb 和 Webmachine 入门?

Mochiweb 和 webmachine 是非常有前途的应用程序,当您看到那些发现他们在他们身边的人如何使用它时。我需要被引导到可以在 mochiweb 上找到初学者教程的地方。似乎没有专门用于该框架的网站。我想我需要的是一个 pdf,或者一个博客站点或者 mochiweb 上的教程,提供了几个如何使用它的例子。我已经是 erlang 程序员了,使用 Nitrogen、Yaws、Mnesia 和 OTP 等请告诉我方法...

0 投票
2 回答
1993 浏览

erlang - Erlang:如何允许超过 1024 个与 Mochiweb 的连接?

我试图增加 GNU/Linux 上的文件描述符最大限制:

我正在启动服务器-env ERL_MAX_PORTS 4096

每当我使用测试工具时,在 1012-1024 打开连接后,我都会收到消息“已关闭:socket_closed_remotely”和“已关闭:emfile”。

0 投票
1 回答
1541 浏览

https - 带有http和https的网络机器?

让 https 与 webmachine 一起工作的推荐方法是什么?

我看到有一个例子可以让 mochiweb使用 https 和 http。我似乎可以将其翻译成网络机器。特别是如何在一个应用程序中同时处理 http 和 https 请求。

0 投票
1 回答
1055 浏览

erlang - 来自 Mochiweb 的流式传输结果

我使用 Erlang 和 Mochiweb 编写了一个网络服务。Web 服务返回大量结果并需要一些时间来完成计算。我想在程序找到结果后立即返回结果,而不是在找到所有结果时返回它们。

编辑:

我发现我可以使用分块请求来流式传输结果,但似乎我找不到关闭连接的方法。那么关于如何关闭 mochiweb 请求的任何想法?

0 投票
3 回答
1315 浏览

erlang - 如何对 mochijson2 返回的结构进行模式匹配?

我刚刚开始修改 Erlang,并且正在构建一个非常简单的测试 Web 应用程序,它只是为了显示我的 Twitter 时间线。

我正在使用 webmachine 来编写应用程序和 erlyDTL 来呈现模板。

mochijson2:decode/1我的问题与 mochiweb函数返回的结构有关。

我可以成功地获取和解码我的时间线,如下例所示:

mochijson2:decode/1函数返回以下格式的元组列表:

但是,要将时间线传递给 erlyDTL,我需要去掉structatom 标签,只需将 proplist 列表传递给 webmachine 资源(由 erlyDTL 呈现)。作为模式匹配的新手,我认为以下列表理解可以实现这一点:

实际上,这对于每个 Tweet proplist 中的所有项目都非常有效,除了一个,<<"user">>,其值本身就是一个{struct, proplist()}元组。我一生无法弄清楚如何struct从这个嵌套的元组中删除原子,并且想知道是否有人可以提供一个 Erlang 代码示例,该示例将模式匹配外部 Tweet和每个 Tweet 中包含{struct, Tweet}的用户。{struct, User}

最终目标是能够访问 Django 模板语言中的每条推文,如下例所示:

任何帮助将不胜感激!

0 投票
1 回答
996 浏览

erlang - 我们如何有效地处理对 mnesia 记录的时间相关限制?

我正在将记录写入 mnesia,这些记录应仅在允许的时间(24 小时)内保存。24 小时后,在用户修改其中的一部分之前,系统应自动删除它们。例如,为用户提供免费通话时间(用于语音通话),他们应该在给定时间内使用这些通话时间。如果他们不使用它,24 小时后,系统应该从用户记录中删除这些资源预留。

现在,这引入了计时器。记录结构的一个示例是:

记录中的计时器对象很重要,因为万一用户在超时(或超时)之前最终使用了保留的资源,系统可以调用timer:cancel/1以解除该对象的计时器服务器。现在的问题是,我有两种方法可以处理这些记录上的计时器:

选项 1:在事务中处理的计时器

关于上述选项。

Mnesia 文档说事务可能会被 tm 管理器重复(由于某种原因)直到它们成功,因此当您放置io:format/2与写入或读取无关的代码或任何其他代码时,它可能会被执行多次。这句话让我在这一点上停顿了一下,想了一种方法来处理它自己的事务之外的计时器,所以我修改了代码如下:

选项 2:在事务之外处理的计时器

处理预订超时的代码:

现在我认为在选项 2 中,通过将计时器处理代码排除在外,我会更安全,即使 mnesia_tm 由于其原因重新执行事务,这段代码也不会运行两次(我避免有多个计时器对象针对同一个记录)。

问题1:这两种实现中哪一种是正确的?和/或错误?告诉我(也)他们俩是否都错了

问题 2:模块定时器,它是否非常适合处理生产中的大量定时器作业?

问题 3:与运行在 mnesia 之上的 Sean Hinde 的timer_mn-1.1相比,timer 模块(可能在 Ets 表之上运行)在生产中的能力(实际上)是否更弱?(我问这个是因为在本身使用 mnesia 的系统上使用 Sean Hinde 的 timer_mn 在架构更改、节点问题等方面似乎是一个问题)

如果有人有另一种方法来处理与 mnesia 相关的计时器问题,请告诉我thanx 伙计们......