`
yjl49
  • 浏览: 113295 次
社区版块
存档分类
最新评论

ejabberd分析(三)启动流程

阅读更多
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安装配置.docx

    三、Ejabberd 安装 Ejabberd 的安装需要按照安装指南进行安装。安装完成后,需要启动 Ejabberd 服务。 3.1 安装流程 Ejabberd 的安装流程主要包括以下几个步骤: * 下载安装包 * 解压缩安装包 * 配置环境变量 * ...

    ejabberd源码

    ejabberd是一款强大的即时通讯服务器,它基于Jabber/XMPP协议,这使得ejabberd能够支持丰富的交互式通信功能,如文本聊天、音视频通话、群聊、文件传输等。作为一款开源软件,ejabberd遵循GPLv2许可证,允许用户自由...

    ejabberd安装配置[归纳].pdf

    2. ejabberd启动:安装完成后,用户需要启动Ejabberd服务。 3. 启动状态查看:用户可以通过命令行工具或管理控制台查看Ejabberd的启动状态。 4. ejabberd停止:用户可以通过命令行工具或管理控制台停止Ejabberd服务...

    ejabberd 服务器测试客户端spark

    9. **推送通知**:对于移动设备,ejabberd可以通过第三方服务(如APNs或GCM)提供推送通知。如果配置得当,Spark客户端在后台时应能收到新消息的通知。 10. **服务器性能监控**:Spark还可以帮助监测ejabberd服务器...

    iOS xmpp ejabberd服务器

    此外,ejabberd支持自定义插件,可以满足特定需求,例如日志记录、用户行为分析等。开发者可以根据需求编写插件并与服务器集成。 总的来说,通过使用ejabberd服务器和XMPP协议,开发者可以在iOS应用中构建功能丰富...

    ejabberd windows installer

    这个安装程序会引导用户完成ejabberd的配置过程,包括选择安装路径、设置服务器配置(如端口、管理员账户、数据库连接等)、启动服务等步骤。安装完成后,ejabberd作为Windows服务运行,提供即时通讯服务。 安装...

    android+ejabberd

    IM(ejabberd)服务器的客户端android开发的代码详解,该代码例子包含单聊、群聊、发送文字、发送及接收文件等功能。

    Android IM开发 Ejabberd+asmck+spack

    5. **数据加密**:在IM中,数据安全尤为重要,要了解如何在传输过程中加密用户数据,如使用OpenSSL库。 6. **UI设计**:创建用户友好的界面,支持聊天记录、联系人列表、消息通知等功能。 7. **多线程和后台服务**:...

    Android使用smack连接ejabberd服务器注册、收发消息

    ejabberd是一个开源的XMPP服务器,它提供了稳定、安全且可扩展的服务,支持多种编程语言的客户端接口。Smack是Java和Android平台上常用的XMPP客户端库,它提供了丰富的API,使得开发者可以轻松地构建XMPP应用。 **...

    ejabberd的安装包

    ejabberd安装包,很好的工具!适合安装!一定会很好用的!

    ejabberd服务器安装及客户端注册文档

    在文档的最后,还提到了如何停止和启动ejabberd服务,使用命令"/etc/init.d/ejabberd start"和"/etc/init.d/ejabberd stop"。这些命令是通过系统的服务脚本来控制ejabberd进程的启动和停止,这也是管理Linux服务的...

    ejabberd-14.07聊天服务器

    4. **启动和管理**:使用ejabberd的控制脚本启动服务器,并通过命令行工具管理服务器状态,如停止、重启、查看日志等。 5. **测试和调试**:部署后,你可以通过客户端测试ejabberd的功能,确保所有配置正确无误。 ...

    ejabberd 群聊 strophe.js 实现

    要深入学习和理解这个demo,你需要阅读和分析这些文件中的代码,理解它们如何与ejabberd服务器交互以及如何展示群聊功能。 总结来说,ejabberd和strophe.js结合使用,可以在Web应用中实现强大的即时通信功能,包括...

    ejabberd-2.1.11

    windows环境下的ejabberd。。。点击即可安装

    ejabberd中mod_privacy_odbc.erl实现没有完全遵循xmpp协议

    在进行源码分析时,可以查看`mod_privacy_odbc.erl`中处理隐私列表相关请求的函数,如`set_list/3`、`get_list/3`、`del_list/3`等,检查它们是否正确处理了各种情况和边界条件。同时,检查与数据库交互的部分,如...

    ejabberd-15.07-osx-installer.app.zip

    在Mac上安装ejabberd-15.07-osx-installer.app的过程如下: 1. 下载并解压ejabberd-15.07-osx-installer.app.zip文件。 2. 双击ejabberd-15.07-osx-installer.app来启动安装程序。 3. 按照安装向导的步骤进行操作,...

    Ejabberd-2.1.10-mac

    Ejabberd是一款高度可扩展、安全且可靠的即时通讯服务器软件,主要基于XMPP协议。在标题"Ejabberd-2.1.10-mac"中,我们可以推断这是一份针对Mac平台的Ejabberd服务器软件的特定版本,即2.1.10。这个版本可能包含了...

    ejabberd_rest_client:面向ejabberd的REST客户端

    ejabberd_rest_client是与ejabberd服务器交互的一个客户端库,它利用ejabberd的API接口,通过RESTful方式来操作ejabberd服务器,实现了对ejabberd服务器的远程控制和数据管理。 ejabberd API是ejabberd服务器提供的...

    ejabberd:ejabberd-XMPP和Web聊天

    ejabberd-XMPP和Web聊天 将与结合在一起的即时消息服务器,以创建支持强加密并与任何Web浏览器或专用XMPP客户端(例如,Pidgin)一起使用的实时聊天服务器。 ejabberd是功能强大的XMPP服务器,它支持群集,实时升级...

    docker-ejabberd:用于Ejabberd服务器的Dockerfile

    从版本16.12开始,ejabberd根据源树中包含的该容器的工作情况拥有自己的docker容器。 在此博客文章中查看更多内容。 我们可以期望将来对此进行更多的工作。 版本 当前版本: 21.01 Docker标记名称基于git分支和...

Global site tag (gtag.js) - Google Analytics