`
zb_86
  • 浏览: 43300 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

非常简单得mochiweb socket wrap

 
阅读更多

<!--?xml version="1.0" encoding="UTF-8" standalone="no"?--> 写了简单得一个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.
分享到:
评论

相关推荐

    mochiweb实例

    2. **Mochiweb_Socket**:提供了一种低级别的接口来处理网络套接字,用于与客户端建立和维护TCP连接。 3. **Mochiweb回应(Response)**:Mochiweb提供了一个结构体来构建HTTP响应,包括状态码、响应头和响应体。你...

    erlang mochiweb-test demo

    这个 "erlang mochiweb-test demo" 压缩包很可能是为了展示如何使用 Mochiweb 在 Erlang 中构建一个简单的 Web 应用程序或测试环境。 Mochiweb 的核心组件包括以下几个部分: 1. **HTTP 服务器**:Mochiweb 提供了...

    mochiweb:MochiWeb 是一个用于构建轻量级 HTTP 服务器的 Erlang 库

    MochiWeb 的最新版本可在MochiWeb 的邮件列表位于 设置 MochiWeb 环境需要 Erlang OTP,可在使用项目创建一个新的 mochiweb:make app PROJECT=project_name 要使用特定目录中的项目创建新的 mochiweb: make app ...

    基于mochiweb的聊天室

    Mochiweb则是Erlang的一个轻量级Web服务器库,它提供了HTTP服务器和WebSocket协议的支持,非常适合构建高性能的Web应用,尤其是实时交互的应用。 **Erlang语言** Erlang的设计理念是进程间的并行性和消息传递。每...

    mochiweb:Mochi Media出色的HTTP库的一个分支-可以在https上找到其规范源

    MochiWeb的邮件列表位于 R12B兼容性:MochiWeb的母版已通过R14A及更高版本进行了测试。 与R12B兼容的分支在单独维护。为方便起见,该存储库的R12B分支有时会在官方存储库中进行镜像。 要使用项目创建新的mochiweb,...

    erlang web frame

    Cowboy还允许开发者通过中间件(Middleware)系统进行功能扩展,使得定制和模块化变得简单。 在Erlang Web框架中,Mochiweb和Cowboy通常被用于构建RESTful API、实时Web应用或者作为其他复杂系统的一部分。这些框架...

    erlang-rpssl-comet:使用Mochiweb和Comet技术的Erlang网页游戏-Rock-Paper-Scissors-Spock-Lizard

    RPSSL-Rock-Paper-Scissors-Spock-Lizard是一款简单但着名的2人游戏。 通常,它是第一人称自己玩的,但这是网络版本。 Web版本使用,该是运行时间很长的HTTP请求,可用于将服务器立即将数据推送到客户端。 每个...

    simple_bridge:一个简单,标准化的Erlang HTTP服务器接口库

    简单桥 通过创建标准化接口,SimpleBridge减轻了对多个Erlang HTTP服务器进行编码的麻烦。 它目前支持Cowboy,Inet,Mochiweb,Webmachine和Yaws。 SimpleBridge用作两个最受欢迎的Erlang Web框架到Web服务器的...

    Webmachine.zip

    Webmachine 是一个应用层,为 mochiweb 提供 HTTP 语义的特性,定义一个简单而清晰的连接应用的方式。 标签:Webmachine Web框架

    erlang实战IP查询服务

    ### Erlang实战IP查询服务知识点解析 #### 一、项目背景与目标 - **项目名称**: Erlang实战IP查询服务 ...对于有兴趣学习Erlang或者希望深入了解其在网络编程中的应用的开发者来说,这是一个非常有价值的实践案例。

    erlang websocket

    Websocket作为互联网协议,允许双向通信,使得客户端和服务器之间的数据交换变得更加简单。本篇文章将深入探讨Erlang如何与Websocket结合,实现高效的实时交互,并使用`rebar3`构建工具和`emysql`库进行数据库操作。...

    Erlang实现的一个Web服务器代码实例

    Erlang 是一种面向并发和分布式系统的编程语言,特别适合构建高可靠性、容错性强的系统,如Web服务器。在上述代码中,我们看到的...在实际开发中,通常会使用像YAWS、Mochiweb或Cowboy这样的成熟Erlang Web服务器框架。

    Erlang高级应用和原理

    Erlang的C底层支持保证了高效的分布式计算,内置的分布原语使得跨节点通信变得简单。Erlang的进程是位置无关的,可以方便地进行迁移。全局名称服务、节点心跳检测、自动故障转移和接管机制以及gen_server行为等OTP...

    使用rebar工具开发erlang工程项目和发布erlang工程项目学习.pdf

    使用 rebar 工具开发 Erlang 工程项目和发布 Erlang 工程项目学习 ...本文只是对使用 rebar 工具开发 Erlang 工程项目和发布 Erlang 工程项目的简单介绍。更多详细信息请查阅 rebar 官方文档和 Erlang 官方文档。

    awesome-web-scraper:令人敬畏的Web scaper,爬虫的集合

    很棒的网络刮板 支持 令人敬畏的Web scaper,爬虫的集合。 Java ...开源Web爬虫,建立在nosql数据库(apacheouchdb,riak),AMQP数据库(rabbitmq),webmachine和mochiweb之上。 Python scrap

    webmachine:用于构建Web应用程序的基于REST的系统

    Webmachine是一个应用程序层,它在mochiweb提供的出色的按位和HTTP语法管理的基础上增加了HTTP语义意识,并提供了一种简单明了的方式将其连接到应用程序的行为。 可获得更多信息。 您还可以阅读有关Webmachine的...

    Erlang与云计算.pdf(确保可以打开)

    Erlang中的进程创建非常简单,可以使用`spawn`函数轻松创建新的进程: ```erlang Pid = spawn(fun() -&gt; loop(0) end). ``` 这里创建了一个新的进程,该进程执行匿名函数`fun() -&gt; loop(0) end`。 **1.4 收发消息** ...

    heroku-genfsm:一个Heroku Erlang应用程序-Genfsm

    heroku-genfsmAn experimental Erlang app which deployed on HerokuSome Deploy Detail在 Heroku 上部署 Webmachine + Mochiweb + ErlyDTL 组合的 Erlang Web 应用

    Good for restful API

    该框架基于Mochiweb(一款用Erlang编写的Web服务器)构建,旨在帮助开发者轻松构建遵循HTTP语义的服务,同时避免了在业务逻辑中直接处理HTTP相关的复杂性。 ##### 原则 - **默认行为**:Webmachine实现了一些默认...

Global site tag (gtag.js) - Google Analytics