<!--?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.
分享到:
相关推荐
2. **Mochiweb_Socket**:提供了一种低级别的接口来处理网络套接字,用于与客户端建立和维护TCP连接。 3. **Mochiweb回应(Response)**:Mochiweb提供了一个结构体来构建HTTP响应,包括状态码、响应头和响应体。你...
这个 "erlang mochiweb-test demo" 压缩包很可能是为了展示如何使用 Mochiweb 在 Erlang 中构建一个简单的 Web 应用程序或测试环境。 Mochiweb 的核心组件包括以下几个部分: 1. **HTTP 服务器**:Mochiweb 提供了...
MochiWeb 的最新版本可在MochiWeb 的邮件列表位于 设置 MochiWeb 环境需要 Erlang OTP,可在使用项目创建一个新的 mochiweb:make app PROJECT=project_name 要使用特定目录中的项目创建新的 mochiweb: make app ...
Mochiweb则是Erlang的一个轻量级Web服务器库,它提供了HTTP服务器和WebSocket协议的支持,非常适合构建高性能的Web应用,尤其是实时交互的应用。 **Erlang语言** Erlang的设计理念是进程间的并行性和消息传递。每...
MochiWeb的邮件列表位于 R12B兼容性:MochiWeb的母版已通过R14A及更高版本进行了测试。 与R12B兼容的分支在单独维护。为方便起见,该存储库的R12B分支有时会在官方存储库中进行镜像。 要使用项目创建新的mochiweb,...
Cowboy还允许开发者通过中间件(Middleware)系统进行功能扩展,使得定制和模块化变得简单。 在Erlang Web框架中,Mochiweb和Cowboy通常被用于构建RESTful API、实时Web应用或者作为其他复杂系统的一部分。这些框架...
RPSSL-Rock-Paper-Scissors-Spock-Lizard是一款简单但着名的2人游戏。 通常,它是第一人称自己玩的,但这是网络版本。 Web版本使用,该是运行时间很长的HTTP请求,可用于将服务器立即将数据推送到客户端。 每个...
简单桥 通过创建标准化接口,SimpleBridge减轻了对多个Erlang HTTP服务器进行编码的麻烦。 它目前支持Cowboy,Inet,Mochiweb,Webmachine和Yaws。 SimpleBridge用作两个最受欢迎的Erlang Web框架到Web服务器的...
Webmachine 是一个应用层,为 mochiweb 提供 HTTP 语义的特性,定义一个简单而清晰的连接应用的方式。 标签:Webmachine Web框架
### Erlang实战IP查询服务知识点解析 #### 一、项目背景与目标 - **项目名称**: Erlang实战IP查询服务 ...对于有兴趣学习Erlang或者希望深入了解其在网络编程中的应用的开发者来说,这是一个非常有价值的实践案例。
Websocket作为互联网协议,允许双向通信,使得客户端和服务器之间的数据交换变得更加简单。本篇文章将深入探讨Erlang如何与Websocket结合,实现高效的实时交互,并使用`rebar3`构建工具和`emysql`库进行数据库操作。...
Erlang 是一种面向并发和分布式系统的编程语言,特别适合构建高可靠性、容错性强的系统,如Web服务器。在上述代码中,我们看到的...在实际开发中,通常会使用像YAWS、Mochiweb或Cowboy这样的成熟Erlang Web服务器框架。
Erlang的C底层支持保证了高效的分布式计算,内置的分布原语使得跨节点通信变得简单。Erlang的进程是位置无关的,可以方便地进行迁移。全局名称服务、节点心跳检测、自动故障转移和接管机制以及gen_server行为等OTP...
使用 rebar 工具开发 Erlang 工程项目和发布 Erlang 工程项目学习 ...本文只是对使用 rebar 工具开发 Erlang 工程项目和发布 Erlang 工程项目的简单介绍。更多详细信息请查阅 rebar 官方文档和 Erlang 官方文档。
很棒的网络刮板 支持 令人敬畏的Web scaper,爬虫的集合。 Java ...开源Web爬虫,建立在nosql数据库(apacheouchdb,riak),AMQP数据库(rabbitmq),webmachine和mochiweb之上。 Python scrap
Webmachine是一个应用程序层,它在mochiweb提供的出色的按位和HTTP语法管理的基础上增加了HTTP语义意识,并提供了一种简单明了的方式将其连接到应用程序的行为。 可获得更多信息。 您还可以阅读有关Webmachine的...
Erlang中的进程创建非常简单,可以使用`spawn`函数轻松创建新的进程: ```erlang Pid = spawn(fun() -> loop(0) end). ``` 这里创建了一个新的进程,该进程执行匿名函数`fun() -> loop(0) end`。 **1.4 收发消息** ...
heroku-genfsmAn experimental Erlang app which deployed on HerokuSome Deploy Detail在 Heroku 上部署 Webmachine + Mochiweb + ErlyDTL 组合的 Erlang Web 应用
该框架基于Mochiweb(一款用Erlang编写的Web服务器)构建,旨在帮助开发者轻松构建遵循HTTP语义的服务,同时避免了在业务逻辑中直接处理HTTP相关的复杂性。 ##### 原则 - **默认行为**:Webmachine实现了一些默认...