我正在尝试github存储库提供的牛仔示例:
https://github.com/ninenines/cowboy/tree/master/examples/web_server
我使用erlang成功构建了这个版本。mk并运行以下命令,该命令将在我的linux终端中打开Erlang shell:
$ ./_rel/web_server_example/bin/web_server_example console
但当我打开<代码>http://localhost:8080在我的web浏览器中,我得到以下错误报告:
=ERROR REPORT====26-Nov-2014::14:33:48 ===过程中的错误
=ERROR REPORT====26-Nov-2014::14:33:48 ===Ranch listener超文本传输协议连接进程开始于cowboy_protocol:start_link/4 at
这是第454行附近的“src/cowboy\u protocol.erl”:
-spec next_request(cowboy_req:req(), #state{}, any()) -> ok.
next_request(Req, State=#state{req_keepalive=Keepalive, timeout=Timeout},
HandlerRes) ->
cowboy_req:ensure_response(Req, 204),
%% If we are going to close the connection,
%% we do not want to attempt to skip the body.
case cowboy_req:get(connection, Req) of
close ->
terminate(State);
_ ->
%% Skip the body if it is reasonably sized. Close otherwise.
Buffer = case cowboy_req:body(Req) of
{ok, _, Req2} -> cowboy_req:get(buffer, Req2);
_ -> close
end,
%% Flush the resp_sent message before moving on.
if HandlerRes =:= ok, Buffer =/= close ->
receive {cowboy_req, resp_sent} -> ok after 0 -> ok end,
?MODULE:parse_request(Buffer,
State#state{req_keepalive=Keepalive + 1,
until=until(Timeout)}, 0);
true ->
terminate(State)
end
end.
webb_server_app.erl文件:
%% Feel free to use, reuse and abuse the code in this file.
%% @private
-module(web_server_app).
-behaviour(application).
%% API.
-export([start/2]).
-export([stop/1]).
%% API.
start(_Type, _Args) ->
Dispatch = cowboy_router:compile([
{'_', [
{"/[...]", cowboy_static, {priv_dir, web_server, "", [
{mimetypes, cow_mimetypes, all},
{dir_handler, directory_handler}
]}}
]}
]),
{ok, _} = cowboy:start_http(http, 100, [{port, 8080}], [
{env, [{dispatch, Dispatch}]},
{middlewares, [cowboy_router, directory_lister, cowboy_handler]}
]),
web_server_sup:start_link().
stop(_State) ->
ok.
谁有什么建议,到底是什么导致了这个问题,以及如何解决它?谢谢。
编辑:
我可以确认,在我的情况下,故障出现在Erlang OTP版本R16B02中。更改为最新的Erlang版本(17.3),并解决配置阶段出现的缺失文件依赖关系(使用以下链接中的解决方案):
https://sites.google.com/site/comptekkia/erlang/how-to-install-erlang-on-ubuntu-10-10
已解决问题。web\u服务器示例现在运行正常。
错误显示的是function子句,因此
cowboy\u req:sure\u response/2的参数肯定是错误的。确实如此,因为第一个参数是
{ok,Request}
,而不是Request
。您必须回溯哪个函数调用了参数不正确的next\u request/3,因为它显然应该在没有确定的情况下调用。
也许在最后的某个地方,你会发现类似的东西:
Req = some_function(...)
您需要将其更改为:
{ok, Req} = some_function(...)
祝你好运,猎虫快乐:D
更新:我刚刚克隆了回购协议,它对我来说很好。我得到了目录列表,所以它不是cowboy中的bug,而是用户代码中的某个地方。
问题内容: 我正在使用predis并订阅了频道并进行监听,它抛出错误并死了,如下图所示,过了60秒后,肯定不是我的Web服务器错误或超时。 目前正在讨论的一个类似的问题在这里。无法得到太多。 我尝试将predis conf文件中的connection_timeout设置为0,但没有太大帮助。 另外,如果我继续使用(向其发送数据并进行处理)该工作程序,则不会出现任何错误。因此,它可能在某处超时,并且
我有一个有角度的Spring靴项目。Angular项目包含向端口8080上运行的Spring Boot应用程序发出Http请求的服务。奇怪的是,我的至少一个服务正在对localhost:4200而不是localhost:8080进行Http调用,尽管我认为我已经设置了正确的配置。 角度服务: proxy.conf.json项目根目录下的文件: 我用以下命令启动Angular服务器:ng serve
使用 PHP-FPM 有多种方式来配置一个 web 服务器以提供 PHP 服务。传统(并且糟糕的)的方式是使用 Apache 的 mod_php。Mod_php将PHP 绑定到 Apache 自身,但是 Apache 对于该模块功能的管理工作非常糟糕。一旦遇到较大的流量, 就会遭受严重的内存问题。 后来两个新的可选项很快流行起来:mod_fastcgi 和 mod_fcgid。 两者均保持一定数量
调用web服务操作时返回的错误是:org.apache.axis2.axisfault:Transport.error:302 error:Redirect at org.apache.axis2.Transport.http.httpsender.handleresponse(httpsender.java:310)at org.apache.axis2.Transport.http.https
问题内容: 我正在探索Go的深度,并且我一直在尝试编写一个简单的Web应用程序来围绕所有内容。我正在尝试服务React.js应用程序。 下面是Go服务器的代码。我有默认的服务路线,效果很好。我正在努力允许将静态文件提供给该索引文件。尽管我需要静态提供JavaScript / CSS / Media文件,但我允许React App自己进行客户端路由。 例如,我需要能够将文件提供给React应用程序才
问题内容: 我有一个应该将文件发送到Web服务的程序,该程序需要SSL连接。我运行程序如下: 这很好,但是当我将第一行更改为 我收到以下错误: 因此,似乎该问题与我正在使用的JRE有关,但似乎没有意义的是非IBM JRE可以正常工作,而IBM JRE则不能。有什么想法或建议吗? 问题答案: 如果您的非IBM jre是sun,那么它已经附带了SSL类实现。 看来IBM jre根本不包含SSL实现类。