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

mochiweb 学习笔记1

阅读更多
不知为什么,我看书的效率总是比较低,吸收的不多,反而看代码会觉得比较有意思,也能更集中精力,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的使用,因此,深入学习Mochiweb的API、HTTP协议的细节以及Erlang的并发编程模式是十分必要的。这将帮助开发者充分利用Mochiweb构建高性能、可扩展的Web服务。 通过...

    erlang mochiweb-test demo

    学习这个 "erlang mochiweb-test demo",你可以深入理解 Erlang 如何通过 Mochiweb 实现 Web 服务,了解并发处理、HTTP 协议的实现以及如何在 Erlang 中编写测试。这对于开发高性能、高并发的 Web 应用程序非常有...

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

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

    基于mochiweb的聊天室

    通过学习和分析这个项目,开发者可以深入理解Erlang的并发模型、Mochiweb的工作原理,以及如何利用它们构建高效、可靠的Web服务。同时,这也为扩展到更复杂的实时应用,如协作工具、游戏服务器等,提供了基础。

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

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

    erlang web frame

    1. **Mochiweb**:Mochiweb是一个用Erlang编写的轻量级Web服务器和HTTP库。它提供了一个简单的API,允许开发者直接处理HTTP请求和响应。Mochiweb的核心特点包括非阻塞I/O模型,使得它在处理大量并发连接时表现出色。...

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

    RPSSL彗星 RPSSL-Rock-Paper-Scissors-Spock-Lizard是一款简单但着名的2人游戏。 通常,它是第一人称自己玩的,但这是网络版本。 ... ... 因为它使用的资源很少,所以我们可以使其永远处于阻塞状态,并保持连接处于打开...

    erlang实战IP查询服务

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

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

    使用 rebar 工具开发 Erlang 工程项目和发布 Erlang 工程项目学习 本文主要介绍了使用 rebar 工具开发 Erlang 工程项目和发布 Erlang 工程项目的方法。rebar 是一个 Erlang 构建工具,可以方便的编译测试 Erlang ...

    erlang websocket

    2. **Erlang实现Websocket**:在Erlang中,可以使用如`cowboy`或`mochiweb`这样的Web框架来处理Websocket连接。它们提供了方便的中间件,使得在Erlang进程中直接处理Websocket连接成为可能。例如,`cowboy`中的`...

    Webmachine.zip

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

    mql超级详细学习文档

    ### mql超级详细学习文档 #### 一、MQ配置与安装步骤 MQ(Message Queue,消息队列)是一种实现进程间通信的技术,可以用于解耦系统、提高性能以及实现异步处理等。本文档将详细介绍如何配置并使用RabbitMQ作为...

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

    它目前支持Cowboy,Inet,Mochiweb,Webmachine和Yaws。 SimpleBridge用作两个最受欢迎的Erlang Web框架到Web服务器的桥梁: 和 从某种意义上讲,它类似于 ,除了具有一些关键的改进/不同之处: 轻松扩展-需要...

    JavaScript + Delphi + ErLang讲座内容(4)

    erlang + delphi demo with Web UI`可能是通过Web界面展示Erlang和Delphi的集成,这可能使用了Erlang的Web开发框架,如Yaws或Mochiweb,与Delphi后端进行交互。 - `12. erlang demo with hot update`可能展示了...

    web1

    - Erlang有许多Web开发框架,如Yaws、Mochiweb和Cowboy等。"web1"项目可能采用了其中一种,这些框架提供了HTTP服务器、路由处理和模板渲染等功能,帮助快速构建Web应用。 6. **数据持久化与数据库集成**: - ...

    Erlang的高级特性和应用

    4. Mochiweb - 用于构建高效的Web服务器和HTTP客户端的Erlang库 5. Disco - 分布式计算框架 **Erlang 与操作系统的比较** Erlang 采用函数式编程范式,与传统的Unix操作系统(通常使用C++)有所不同。在Erlang中,...

    CloudFoundry - The building of the Open PaaS Presentation

    2. **多框架兼容**:支持各种框架,例如Spring、Grails、Express、Rails、Lift、MochiWeb等。 3. **多服务集成**:能够与多种数据服务和其他服务集成,如MySQL、PostgreSQL、MongoDB、Redis、RabbitMQ等。 4. **多云...

    Erlang实战

    通过本案例的学习,我们不仅了解了如何使用Erlang构建高性能的在线IP查询服务,而且还深入学习了OTP的关键行为如gen_server、gen_fsm和gen_event的具体应用。这种实践不仅有助于初学者快速掌握Erlang的核心概念,还...

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

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

Global site tag (gtag.js) - Google Analytics