ejabberd的启动从ejabberd:start() 开始。
application用来表示一个可以单独启动和停止、并被复用的程序单元。通常一个application都有一个同名的app文件来定义。
对于系统工具(systool)直接调用的app文件必须包含以下几项:
description
, vsn
,
modules
, registered
, applications
我们查看ejabberd.app可以看到以下内容:
最后一项:mod 定义了应用程序的回调模块和启动参数。 在应用程序启动时会由主导进程来调用这个模块的start/2方法。
ejabberd_app.erl 中的start/2 :
我们可以看到它调用了一系列的方法和函数来完成整个应用的启动。
这里的ejabberd_command类似于java中的虚方法,这个ejabberd_command 具有指定的名称、指定类型数量参数、指定类型返回值。
例如:
#ejabberd_commands{name = register, tags = [accounts],
desc = "Register a user",
module = ?MODULE, function = register,
args = [{user, string}, {host, string}, {password, string}],
result = {res, restuple}},
定义了一个名为register,接受[{user, string}, {host, string}, {password, string}] 参数,返回{res, restuple}的虚方法。
详细看下这个supervisior 的init()定义:
重启策略为one_for_one(只重启终止的子进程自身),如果1s内重启次数超过10则终止所有子进程和自身。列表中为子进程的定义。以Hooks为例子:
子进程定义的格式为:{Id, StartFunc, Restart, Shutdown, Type, Modules}
id: 分配的ID
StartFunc: 启动子进程时调用的方法
Restart: 重启子进程时调用的方法
Shutdown: 关闭子进程时调用的方法
Type: 子进程的类型,(supervisior or worker)
Modules: 回调模块
可以看到这里启动了不少的子进程,从名字上大体上可以看出各个子进程的功能。
分享到:
相关推荐
ejabberd是基于Jabber/XMPP协议的即时通讯服务器,由GPLv2授权(免费和开放源码),采用Erlang/OTP开发。它的特点是,跨平台,容错,集群和模块化。
IM(ejabberd)服务器的客户端android开发的代码详解,该代码例子包含单聊、群聊、发送文字、发送及接收文件等功能。
IM服务器Ejabberd安装教程使用的测试客户端,可安装用来测试服务器是否成功安装,测试即时聊天、账号上下线测试等
Ejabberd 服务器 asmck Android端使用的jar包 spack pc端客户端
ejabberd安装包,很好的工具!适合安装!一定会很好用的!
ejabberd windows installer
ejabberd安装配置[归纳].pdf
windows环境下的ejabberd。。。点击即可安装
Android使用smack连接ejabberd服务器,完成了连接、登录、创建新用户、收发消息的功能
此文件是ios 用xmpp开发即时通讯的服务器
学习strophe.js,ejabberd 群聊在项目中实现 demo源码分享
ejabberd-XMPP和Web聊天 将与结合在一起的即时消息服务器,以创建支持强加密并与任何Web浏览器或专用XMPP客户端(例如,Pidgin)一起使用的实时聊天服务器。 ejabberd是功能强大的XMPP服务器,它支持群集,实时升级...
从版本16.12开始,ejabberd根据源树中包含的该容器的工作情况拥有自己的docker容器。 在此博客文章中查看更多内容。 我们可以期望将来对此进行更多的工作。 版本 当前版本: 21.01 Docker标记名称基于git分支和...
docker-ejabberd:ejabberd Docker映像集
ejabberd_rest_client
ejabberd安装配置.docx
ejabberd - 高性能企业即时消息服务器快速入门指南要求要编译 ejabberd,您需要: GNU 制造海湾合作委员会Libexpat 1.95 或更高版本利比亚ml 0.1.4 或更高Erlang/OTP R15B 或更高版本。 OpenSSL 0.9.8 或更高版本,...
Ejabberd-Packet-Interceptor 拦截和更改消息的 Ejabberd 模块这个模块接受一个 Ejabberd 消息包,改变消息体并发送它。 该模块挂钩 packet_filter 并检查每个数据包是否有消息正文。 如果有消息正文,它会对其进行 ...
具体实现: 一 在boss服务器上安装ejabberd服务器端程序 二 客户端注册测试
整合SSM 框架Demo 里边并包含二维码生成功能 ,手机扫码上传图片功能 websocket 监听 ejabberd消息推送 等相应示例......