参考:
http://anders.conbere.org/journal/
http://www.process-one.net/en/wiki/ejabberd_module_development/
ejabberd的内部的很多模块都是以插件的形式工作,这样我们也可以开发自己的模块融合到ejabberd中去,完成各种各样我们独特的需求。
ejabberd定义了一个gen_mod behaviour,其要求下面的callback:
start(Host, Opts) -> ok
stop(Host) -> ok
* Host = string()
* Opts = [{Name, Value}]
* Name = Value = string()
其中Host是运行这module的一个虚拟的主机。
Opts是在配置中指定的mod的参数(后面会讲到),可以通过gen_mod:get_module_opt/4获取(参看gen_mod.erl代码得知这些信息存储在ets中)。
我们要实现一个mod非常容易,就非常容易了:
-module(my_module).
-author('your@mail.com').
-behaviour(gen_mod).
-include('ejabberd.hrl').
%% gen_mod callback
-export([start/2, stop/1]).
start(_Host, _Opt) -> ok.
stop(_Host) -> ok.
让我们在添加一代码,让我们这个“无用”的mod更加清晰一些
start(_Host, _Opt) ->
?DEBUG("EXAMPLE MODULE LOADING").
编译my_module,将my_module.beam放到你的ejabberd/ebin目录中:
mv my_module.beam /var/lib/ejabberd/ebin
接着,我们需要对ejabberd.cfg做一些配置,告诉ejabberd加载我们的my_module:
{modules,
[
{mod_register, [{access, register}]},
...
{my_module, []} % []为my_module:start/2中的第二个参数
]}.
好了,一切OK后,重新启动ejabberd,如果你的loglevel设置为5,那么你将看到如下信息:
=INFO REPORT==== 2008-07-17 15:33:27 ===
D(<0.37.0>:ejabberd_auth_my_auth:44) : EXAMPLE MODULE LOADING
我们的ejabberd module顺利加载了。
写到这里,您可能会问,如何实现一个更加强大的module呢?
原来ejabberd为我们提供了很多的API,可以供我们使用,包含如下:
ejabberd core modules (ejabberd核心模块)
ejabberd events and hooks(ejabberd 事件及钩子)
ejabberd IQ handlers
ejabberd route table (ejabberd 路由表)
ejabberd HTTP request handlers(ejabberd HTTP 请求处理)
有了这些API,我们可以实现任何我们想要的功能。
下节实现一个简单http处理模块
分享到:
相关推荐
在Android平台上进行即时通讯(Instant Messaging,简称IM)开发是一项技术含量较高的工作,涉及到网络通信、数据加密、用户体验等多个方面。本项目“Android IM开发 Ejabberd+asmck+spack”提供了一套完整的解决...
ejabberd是一款强大的即时通讯服务器,它基于Jabber/XMPP协议,这使得ejabberd能够支持丰富的交互式通信功能,如文本聊天、音视频通话、群聊、文件传输等。作为一款开源软件,ejabberd遵循GPLv2许可证,允许用户自由...
Spark是一款流行的XMPP客户端,由Openfire团队开发,支持多种操作系统,包括Windows、Mac OS X和Linux。它提供了直观的用户界面,使得用户可以轻松地进行即时通讯、群聊、文件传输等功能。当ejabberd服务器设置完毕...
ejabberd是一款开源的XMPP服务器,支持多种平台,包括iOS。它提供了强大的可扩展性和高可用性,能够处理大量的并发用户,并且支持多种安全特性,如SSL/TLS加密,确保通信的安全性。ejabberd-2.1.11-osx-installer....
IM(ejabberd)服务器的客户端android开发的代码详解,该代码例子包含单聊、群聊、发送文字、发送及接收文件等功能。
Ejabberd是一款流行的开源即时通讯服务器软件,具有高度灵活性和可扩展性。下面是Ejabberd安装配置的详细知识点解析: Ejabberd下载 Ejabberd的下载可以从官方网站获取,目前支持多种操作系统,包括Windows、Linux...
ejabberd是一款开源的XMPP服务器,它基于Erlang编程语言,提供高度可扩展性和高并发处理能力。在Windows环境下,ejabberd通常通过安装程序进行部署,这正是"ejabberd windows installer"所涉及的内容。Ejabberd不...
在Android平台上,开发即时通讯应用时,我们常常会利用XMPP(Extensible Messaging and Presence Protocol)协议来实现。本文将详细讲解如何使用Smack库连接到ejabberd服务器,并进行用户注册、登录以及收发消息的...
ejabberd是一款开源的XMPP服务器,常用于构建实时通信系统,如即时消息(IM)、群聊等。XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准,用于实现即时通信和在线状态传输。在这个场景...
Ejabberd 是一个基于 XMPP 协议的 instant messaging 服务器,主要用于实时通信和即时消息传递。下面是 Ejabberd 安装配置的相关知识点: 一、Ejabberd 下载 Ejabberd 的安装需要从官方网站下载对应的安装包。下载...
2. **高可用性与扩展性**:ejabberd采用了 Erlang/OTP(Open Telecom Platform)语言开发,天生具备高并发和容错能力。它可以轻松地在集群环境中运行,随着用户数量的增长,可以动态添加节点来扩展服务。 3. **安全...
Ejabberd是一款高度可扩展、安全且可靠的即时通讯服务器软件,主要基于XMPP协议。在标题"Ejabberd-2.1.10-mac"中,我们可以推断这是一份针对Mac平台的Ejabberd服务器软件的特定版本,即2.1.10。这个版本可能包含了...
ejabberd安装包,很好的工具!适合安装!一定会很好用的!
ejabberd是一款开源的XMPP服务器,广泛应用于实时通讯系统,如即时消息、在线状态显示、多用户聊天室等功能的实现。它基于Erlang编程语言,这使得ejabberd具有高度可扩展性和高容错性。 ejabberd-15.07-osx-...
ejabberd是一款开源的XMPP服务器,广泛用于构建实时通信系统。在ejabberd中,`mod_privacy_odbc.erl`是用于处理用户隐私列表模块的一部分,该模块与数据库(通常通过ODBC接口)交互来存储和管理用户的隐私设置。然而...
SSM框架,全称为Spring、SpringMVC和MyBatis的集成框架,是Java Web开发中常用的一种技术栈。这个框架结合了Spring的核心IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)...
windows环境下的ejabberd。。。点击即可安装
开发的,根据业务需要改造而来。修改和扩展了很多 ejaberd 不支持的功能。 关键功能 分布式:去掉了依赖 mnesia 集群的代码,来支持更大的集群,以及防止由于网络分区导致的集群状态不一致。 消息处理:通过ejabberd...
总结来说,ejabberd_rest_client是ejabberd服务器的重要补充工具,它简化了开发者与ejabberd服务器之间的交互,使得基于Ruby的XMPP应用开发变得更加便捷高效。通过这个库,你可以轻松地进行用户管理、聊天室控制、...
在进行IT项目管理时,特别是涉及到服务器安装和客户端注册的场景,ejabberd是一个非常重要的开源即时通讯服务器,它基于XMPP(Extensible Messaging and Presence Protocol)协议,这个协议是国际开放标准用于即时...