zoukankan      html  css  js  c++  java
  • 非常简单得mochiweb socket wrap

    写了简单得一个socket 接口,就是把mochiweb里socket部分抽取出来了。

     
    mochiweb_socket_wrap.erl:
     
    %%%-------------------------------------------------------------------
    %%% @author zhangbo <>
    %%% @copyright (C) 2011, zhangbo
    %%% @doc
    %%%
    %%% @end
    %%% Created : 28 Dec 2011 by zhangbo <>
    %%%-------------------------------------------------------------------
    -module(mochiweb_socket_wrap).
     
    -compile(export_all).
     
    -define(DEFAULTS, [{name, ?MODULE},
                       {port, 8889}]).
     
    start() ->
        %% insert your callback loop here
        CallbackLoop = fun() ->
                               io:format("CallbackLoop fun is called~n", [])
                       end,
       
        Loop = fun (S) ->
                       ?MODULE:loop(S, CallbackLoop)
               end,
        Options1 = [{ip, "127.0.0.1"}, {loop, Loop}],
        Options = mochilists:set_defaults(?DEFAULTS, Options1),
        mochiweb_socket_server:start(Options).
     
    stop() ->
        mochiweb_socket_server:stop(?MODULE).
     
     
    loop(S, CallbackLoop) ->
        io:format("loop~n", []),
        ok = mochiweb_socket:setopts(S, [{active, once}]),
        %% inet:setopts(S, [{nodelay,true}, {active, true}]),
        try
            receive
                {tcp, S, Bin} ->
                    io:format("Bin:~p~n",[Bin]),
                    CallbackLoop(),
                    loop(S, CallbackLoop);
                {tcp_closed,S} ->
                    io:format("Socket ~p is closed~n",[S]),
                    gen_tcp:close(S);
                Any ->
                    io:format("Any:~p~n",[Any]),
                    loop(S, CallbackLoop)
            end
        catch
            _:X ->
                io:format("Exception:~p:~p~n",[X, erlang:get_stacktrace()]),
                {X, erlang:get_stacktrace()}
        end.
  • 相关阅读:
    第八节:layout和partialView、RenderPartial和Partial、 action和RenderAction
    第七节:HtmlHelper及其扩展
    第六节:Razor引擎及相关语法
    第五节:从源码的角度理解各种Result(ActionResult、JsonResult、JavaScriptResult等)
    图片保存到数据库以及C#读取图片
    C#复制数据到剪切板
    IIS8.5支持WCF
    C# 中const和readonly的区别
    C#获取类库(DLL)的绝对路径
    C#怎样用文件读写在文件的原有基础上追加一行数据
  • 原文地址:https://www.cnblogs.com/bozhang/p/3114700.html
Copyright © 2011-2022 走看看