不知为什么,我看书的效率总是比较低,吸收的不多,反而看代码会觉得比较有意思,也能更集中精力,programming erlang看了也2遍了,基本除了语法熟悉了外,对具体应用还是一点都没明白,直到发现了mochiweb,这东西代码好少呀,研究研究,记录下来
代码布局 标准的erlang otp目录结构
mochiweb本身应该算一个web 服务器的核,然后可以围绕它定制自己的web server
scripts目录下提供了一个new_mochiweb.erl的可执行的escript,看头就知道了
#!/usr/bin/env escript
执行入口是
main([Name]) ->
main([Name, "."]);
escript的入口函数必须是以一个list为参数的,有几个命令行参数,list里就应该有几个元素
Run: /your-mochiweb-path/scripts/new_mochiweb.erl mochiconntest
调用的是 mochiweb_skel:skelcopy,将 $mochiweb_home/priv/skel/ 下的所有文件复制到新的目录 mochiconntest中,并替换文件名和内容中所有的 "skel" ( 跟rails的脚手架还挺像)
生成的就是我们要进一步开发的一个基础代码框架,可以直接make后运行,start-dev.sh
#!/bin/sh
cd `dirname $0`
exec erl -pa $PWD/ebin $PWD/deps/*/ebin -boot start_sasl -s reloader -s skel
$0是当前脚本文件名 dirname $0返回所在目录全路径 -s reloader -s skel(这个skel实际已经被替换成实际的名字) 分别调用reloader:start() 和 skel:start()
reloader是一个gen_server ,通过
%% @spec init([]) -> {ok, State}
%% @doc gen_server init, opens the server in an initial state.
init([]) ->
{ok, TRef} = timer:send_interval(timer:seconds(1), doit),
{ok, #state{last = stamp(), tref = TRef}}.
启动一个定时器,然后定时传递消息,调用回调函数
handle_info(doit, State) ->
Now = stamp(),
doit(State#state.last, Now),
{noreply, State#state{last = Now}};
doit进行code:all_loaded()的所有moudule进行更新,根据最后修改时间判断是否reload
skel里启动application
然后研究下inets,结合代码看erlang doc看来才是最佳学习方法
纯属新手,请勿见笑。
分享到:
相关推荐
标签“mochiweb”提示我们这个实例专注于Mochiweb的使用,因此,深入学习Mochiweb的API、HTTP协议的细节以及Erlang的并发编程模式是十分必要的。这将帮助开发者充分利用Mochiweb构建高性能、可扩展的Web服务。 通过...
学习这个 "erlang mochiweb-test demo",你可以深入理解 Erlang 如何通过 Mochiweb 实现 Web 服务,了解并发处理、HTTP 协议的实现以及如何在 Erlang 中编写测试。这对于开发高性能、高并发的 Web 应用程序非常有...
MochiWeb 的最新版本可在MochiWeb 的邮件列表位于 设置 MochiWeb 环境需要 Erlang OTP,可在使用项目创建一个新的 mochiweb:make app PROJECT=project_name 要使用特定目录中的项目创建新的 mochiweb: make app ...
通过学习和分析这个项目,开发者可以深入理解Erlang的并发模型、Mochiweb的工作原理,以及如何利用它们构建高效、可靠的Web服务。同时,这也为扩展到更复杂的实时应用,如协作工具、游戏服务器等,提供了基础。
MochiWeb的邮件列表位于 R12B兼容性:MochiWeb的母版已通过R14A及更高版本进行了测试。 与R12B兼容的分支在单独维护。为方便起见,该存储库的R12B分支有时会在官方存储库中进行镜像。 要使用项目创建新的mochiweb,...
1. **Mochiweb**:Mochiweb是一个用Erlang编写的轻量级Web服务器和HTTP库。它提供了一个简单的API,允许开发者直接处理HTTP请求和响应。Mochiweb的核心特点包括非阻塞I/O模型,使得它在处理大量并发连接时表现出色。...
RPSSL彗星 RPSSL-Rock-Paper-Scissors-Spock-Lizard是一款简单但着名的2人游戏。 通常,它是第一人称自己玩的,但这是网络版本。 ... ... 因为它使用的资源很少,所以我们可以使其永远处于阻塞状态,并保持连接处于打开...
### Erlang实战IP查询服务知识点解析 #### 一、项目背景与目标 - **项目名称**: Erlang实战IP查询服务 ...对于有兴趣学习Erlang或者希望深入了解其在网络编程中的应用的开发者来说,这是一个非常有价值的实践案例。
使用 rebar 工具开发 Erlang 工程项目和发布 Erlang 工程项目学习 本文主要介绍了使用 rebar 工具开发 Erlang 工程项目和发布 Erlang 工程项目的方法。rebar 是一个 Erlang 构建工具,可以方便的编译测试 Erlang ...
2. **Erlang实现Websocket**:在Erlang中,可以使用如`cowboy`或`mochiweb`这样的Web框架来处理Websocket连接。它们提供了方便的中间件,使得在Erlang进程中直接处理Websocket连接成为可能。例如,`cowboy`中的`...
Webmachine 是一个应用层,为 mochiweb 提供 HTTP 语义的特性,定义一个简单而清晰的连接应用的方式。 标签:Webmachine Web框架
### mql超级详细学习文档 #### 一、MQ配置与安装步骤 MQ(Message Queue,消息队列)是一种实现进程间通信的技术,可以用于解耦系统、提高性能以及实现异步处理等。本文档将详细介绍如何配置并使用RabbitMQ作为...
它目前支持Cowboy,Inet,Mochiweb,Webmachine和Yaws。 SimpleBridge用作两个最受欢迎的Erlang Web框架到Web服务器的桥梁: 和 从某种意义上讲,它类似于 ,除了具有一些关键的改进/不同之处: 轻松扩展-需要...
erlang + delphi demo with Web UI`可能是通过Web界面展示Erlang和Delphi的集成,这可能使用了Erlang的Web开发框架,如Yaws或Mochiweb,与Delphi后端进行交互。 - `12. erlang demo with hot update`可能展示了...
- Erlang有许多Web开发框架,如Yaws、Mochiweb和Cowboy等。"web1"项目可能采用了其中一种,这些框架提供了HTTP服务器、路由处理和模板渲染等功能,帮助快速构建Web应用。 6. **数据持久化与数据库集成**: - ...
4. Mochiweb - 用于构建高效的Web服务器和HTTP客户端的Erlang库 5. Disco - 分布式计算框架 **Erlang 与操作系统的比较** Erlang 采用函数式编程范式,与传统的Unix操作系统(通常使用C++)有所不同。在Erlang中,...
2. **多框架兼容**:支持各种框架,例如Spring、Grails、Express、Rails、Lift、MochiWeb等。 3. **多服务集成**:能够与多种数据服务和其他服务集成,如MySQL、PostgreSQL、MongoDB、Redis、RabbitMQ等。 4. **多云...
通过本案例的学习,我们不仅了解了如何使用Erlang构建高性能的在线IP查询服务,而且还深入学习了OTP的关键行为如gen_server、gen_fsm和gen_event的具体应用。这种实践不仅有助于初学者快速掌握Erlang的核心概念,还...
heroku-genfsmAn experimental Erlang app which deployed on HerokuSome Deploy Detail在 Heroku 上部署 Webmachine + Mochiweb + ErlyDTL 组合的 Erlang Web 应用