问题标签 [cowboy]

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 投票
2 回答
717 浏览

http - Erlang停止应用程序不会结束所有进程?

当我停止我构建的 Erlang 应用程序时,牛仔侦听器进程保持活动状态,继续处理请求。在我编写的 gen_server 中,我在 init 上启动了一个服务器。如下所示:

这将启动牛仔 http 服务器,它使用 cowboy_static 服务priv/app/目录中的一些内容,并使用当前模块来处理自定义内容(模块实现了所有牛仔 http 句柄回调)。它获取从调用返回的 pid 并将其分配给handler_pid状态记录。这一切都有效。但是,当我启动包含此模块(有效)的应用程序然后我停止它时。所有进程都结束(至少我的应用程序中的那些)。自定义处理程序(在与 gen_server 相同的模块中实现)不再起作用。但是 cowboy_static 句柄继续处理请求。它继续提供静态文件,直到我杀死节点。我尝试通过将其添加到 gen_server 来解决此问题:

但没有任何改变。cowboy_static 处理程序继续提供静态文件。

问题:

  • 我在这里做错什么了吗?
  • cowboy_static 是在牛仔应用程序下运行的吗?我想是的。
  • 如果是这样,我该如何阻止它?
  • 而且,我应该担心停止它吗?也许这没什么大不了的。

提前致谢!

0 投票
2 回答
1617 浏览

erlang - 如何使用 Cowboy 下载文件?

我想从浏览器下载文件,我尝试通过牛仔来实现,但是我失败了,浏览器显示“从服务器收到重复标头。”。我不知道,请大家帮帮我。这是我的处理程序代码:`

0 投票
1 回答
2868 浏览

erlang - 在牛仔中找不到包含库“rabbit_common/include/rabbit.hrl”

尝试在 OSX 下在 Erlang 中运行 RabbitMQ 教程示例,但失败并显示以下消息:

amqp_example.erl:

请帮我解决这个问题。感谢!!!

0 投票
1 回答
894 浏览

erlang - Cowboy 的路由选项的目的是什么?

Cowboy路由指南说,每条路径都被构造为一个元组,其中包括“在初始化时将给予它 [请求处理程序] 的选项”。但它没有解释选项的目的,而且我不确定如何使用它们,因为传递给处理程序的 Req 对象包含有关路径及其绑定的信息。

那么如果路由选项不包含任何唯一的路径信息,它们有哪些用例呢?

0 投票
2 回答
471 浏览

erlang - Erlang 主管进程

我一直在深入学习 Erlang,在完成了 Joe Armstrong 的“Programming Erlang”之后,我一直在回顾一件事。

在我看来,主管会为每个子处理程序生成一个进程。因此,每个声明的 gen_server 类型处理程序都将作为一个单独的进程运行。

如果您正在构建一个小型 Web 服务器,并且您希望每个请求都成为自己的进程,会发生什么情况。您是否仍然遵守 OTP 原则并以某种方式使用 gen_server(如何?),还是创建自己的行为?

例如,牛仔如何处理这个问题。? 它仍然使用 gen_server 吗?

0 投票
0 回答
327 浏览

erlang - 无法编译牛仔

我正在使用钢筋来安装牛仔,但是当我这样做时(在钢筋 get-deps 之后):

我越来越:

这就是我的 rebar.config 中的内容:

0 投票
0 回答
351 浏览

erlang - 牛仔连接进程以 enomem 终止

我遇到了牛仔错误

牧场侦听器 api_resource 在 <0.1822.0> 退出时以 cowboy_protocol:start_link/4 开始连接过程,原因是:enomem#012

在请求处理程序中,我通过 erlang 端口(c 语言)与另一个供应商的 tts 平台进行交互。对端口的第一个 tts 命令成功,我可以得到 1M 字节的数据,对端口的第二个 tts 命令成功发送到端口,但随后牛仔进程立即终止并出现上述错误消息。

我试图提高 erlang vm 的堆栈大小、堆大小、二进制虚拟堆大小和 os 的堆栈大小,没有帮助。

任何建议表示赞赏,谢谢。

代码:

0 投票
1 回答
972 浏览

rest - REST 文件上传 POST 请求的示例?

我正在尝试使用 Cowboy 在 Erlang 中创建一个 RESTful 服务器,但由于我对 HTTP 请求一无所知,我遇到了麻烦。我找不到 RESTful 文件上传请求的示例,只有一个普通的。

这适用于常规 HTTP 服务器(在 Cowboy 示例中找到)上传文件compile.sh,其中包含git add * ; git commit -a -m "upload" ; git push

但是,如果我将此请求发送到 RESTful 服务器,我会收到以下响应:

现在,我可能做错了 RESTful 服务器,但我不确定。其中很多都封装在 Cowboy 中,所以我真的不知道它是如何工作的。RESTful 服务器的请求是否应该不同?

0 投票
1 回答
498 浏览

erlang - [Cowboy-Erlang]:使用提供的牛仔示例 web_server 精确指向 localhost:8080 时出错

我正在尝试这个 github 存储库提供的牛仔示例:

https://github.com/ninenines/cowboy/tree/master/examples/web_server

我使用 erlang.mk 成功构建了版本并运行以下命令,这将在我的 linux 终端中打开 Erlang shell:

但是当我 http://localhost:8080在我的网络浏览器中打开时,我收到以下错误报告:

=错误报告==== 2014 年 11 月 26 日::14:33:48 === 节点“web_server_example@127.0.0.1”上的进程 <0.166.0> 出错,退出值:{function_clause,[{cowboy_req, ensure_response,[{ok,{http_req,#Port<0.454>,ranch_tcp,keepalive,<0.166.0>,<<3 bytes>>,'HTTP/1.1',{{127,0,0,1},57150 },<<9 字节>>,未定义,8080,<<1 字节>>,未定义,<<0 字节>>,未定义,未定义,[{<<4 字节>>,<<14 字节>>}, {<<10 字节>>,<<10 字节>>},{<<13 字节>>,<<9 字节>>},{<<6 字节>>,<<74 字节>>},{< <10 字节>>,<<104 字节>>},{<<15 字节>>,<<19 字节>>},{<<15 字节>>,<<35 字节>>}],[{< <10 字节>>,[<<10 字节>>]}],未定义,[],等待,<<0 字节>>,未定义...

=错误报告==== 2014 年 11 月 26 日::14:33:48 === 牧场侦听器 http 在 <0.166.0> 退出时使用 cowboy_protocol:start_link/4 启动了连接过程,原因是:{function_clause,[{ cowboy_req,ensure_response,[{ok,{http_req,#Port<0.454>,ranch_tcp,keepalive,<0.166.0>,<<"GET">>,'HTTP/1.1',{{127,0,0,1 },57150},<<"localhost">>,undefined,8080,<<"/">>,undefined,<<>>,undefined,undefined,[{<<"host">>,<<"localhost :8080">>},{<<"connection">>,<<"keep-alive">>},{<<"cache-control">>,<<"max-age=0">>} ,{<<"接受">>,<<"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8">>},{<<"user-agent">>,<<"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36" >>},{<<"accept-encoding">>,<<"gzip, deflate, sdch">>},{<<"accept-language">>,<<"sv-SE,sv;q= 0.8,en-US;q=0.6,en;q=0.4">>}],[{<<"connection">>,[<<"keep-alive">>]}],undefined,[],等待,<<>>,undefined,false,done,[],<<>>,undefined}},204],[{file,"src/cowboy_req.erl"},{line,1009}]},{ cowboy_protocol,next_request,3,[{file,"src/cowboy_protocol.erl"},{line,454}]}]}

这是第 454 行附近的“src/cowboy_protocol.erl”:

和 webb_server_app.erl 文件:

有没有人对究竟是什么导致这个问题以及如何解决它有任何建议?谢谢。

编辑:

我可以确认故障出在 Erlang OTP 版本 R16B02 中。更改为最新的 Erlang 版本 (17.3),以及解决在配置阶段出现的缺失文件依赖项(使用以下链接中的解决方案):

https://sites.google.com/site/comptekkia/erlang/how-to-install-erlang-on-ubuntu-10-10

解决了问题。web_server 示例现在可以正常运行。

0 投票
1 回答
182 浏览

websocket - 在芝加哥老板中通过 websocket 返回 boss_db 数据时出错

我正在尝试通过 websocket 连接返回使用 boss_db 获得的数据。在此示例中,我想返回我获取的问题,您可以看到日志打印出问题,但是有一些错误导致终止,原因是:返回值错误:好的。

以下是我的代码和错误:

更新

这是我更新的日志以及您的建议:

以下是提交“a”的示例请求的日志