码迷,mamicode.com
首页 > 其他好文 > 详细

cowboy的例子

时间:2014-12-11 22:09:00      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   color   os   sp   

大体参考的这里,非常感谢他的例子

 

开发的时候先下载好cowboy的库,放到~/.erlang里面

code:add_pathz("/Users/mmc/erlang/3rd_libs/cowboy/ebin/").
code:add_pathz("/Users/mmc/erlang/3rd_libs/cowboy/deps/ranch/ebin/").
code:add_pathz("/Users/mmc/erlang/3rd_libs/cowboy/deps/cowlib/ebin/").

ranch和cowlib是rebar get-deps得到的

 

建立工程

rebar-creator create-app erlblog

 

erlblog_app.erl

-module(erlblog_app).
-behaviour(application).

-export([start/2, stop/1]).

-define(C_ACCEPTORS,  100).


start(_StartType, _StartArgs) ->
    ok = application:start(crypto),
    ok = application:start(cowlib),
    ok = application:start(ranch),
    ok = application:start(cowboy),

    Routes    = routes(),
    Dispatch  = cowboy_router:compile(Routes),
    Port      = port(),
    TransOpts = [{port, Port}],
    ProtoOpts = [{env, [{dispatch, Dispatch}]}],
    cowboy:start_http(http, ?C_ACCEPTORS, TransOpts, ProtoOpts).

stop(_State) ->
    ok.

routes() ->
    [
        {‘_‘, [
            {"/", erlblog_handler, []}
        ]}
    ].

port() ->
    case os:getenv("PORT") of
        false ->
            {ok, Port} = application:get_env(http_port),
            Port;
        Other ->
            list_to_integer(Other)
    end.

 

erlblog_handler.erl

-module(erlblog_handler).

-export([init/3]).
-export([handle/2]).
-export([terminate/3]).

init(_Transport, Req, []) ->
    {ok, Req, undefined}.

handle(Req, State) ->
    {ok, Req2} = cowboy_req:reply(200, [], <<"Hello world!">>, Req),
    {ok, Req2, State}.

terminate(_Reason, _Req, _State) ->
    ok.

 

erlblog.app.src

{application, erlblog,
    [
        {description, ""},
        {vsn, "1"},
        {registered, []},
        {applications, [
            kernel,
            stdlib
        ]},
        {mod, { erlblog_app, []}},
        {env, [{http_port, 8080}]}
    ]}.

 

rebar.config

% -*- erlang -*-
{erl_opts, [debug_info]}.
{deps, [
    %如果你需要用rebar generate发布,则在这里必须写上,编译以后会在rel/xxx/lib里面有响应的库,否则运行时崩溃
    {cowboy, "1.0.1", {git, "https://github.com/extend/cowboy.git", {tag, "1.0.1"}}}
]}.
{cover_enabled, true}.

{eunit_opts, [verbose, {report,{eunit_surefire,[{dir,"."}]}}]}.
{sub_dirs, ["apps/erlblog", "rel"]}.

 

启动

application:start(erlblog).

看看加载了哪些application

application:which_applications().

 

本地访问试试

http://127.0.0.1:8080

cowboy的例子

标签:des   style   blog   http   io   ar   color   os   sp   

原文地址:http://www.cnblogs.com/ziyouchutuwenwu/p/4158489.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!