继续上一部分,我们已经可以开发一个简单的ejabberd module了,这次让我们开发一个简单的http处理模块。这个http模块可以输出服务器中登录的用户列表(json格式)。
首先,再我们上节的my_module中添加一个process/2导出函数:
-module(mod_http_hello_world).
-author('your@mail.com').
-vsn('1.0').
-define(EJABBERD_DEBUG, true).
-behavior(gen_mod).
-export([
start/2,
stop/1,
process/2
]).
-include("ejabberd.hrl").
-include("jlib.hrl").
-include("ejabberd_http.hrl").
start(_Host, _Opts) ->
ok.
stop(_Host) ->
ok.
process(_Path, _Request) ->
"Hello World".
process/2用来处理ejabberd http服务器中的请求,其中第一个参数Path表示url中的路径,比如
http://example.com/this/cool/article 这个URL如果要我们的模块处理,对应的Path为:["this", "cool", "article"],对了,就是路径拆分后的一个list。这里我们先不对路径做任何处理,匹配,我们首先验证我的http handler module是否可以工作。
老规矩,编译module,然后放到ejabbered的ebin目录:
mv mod_http_hello_world.beam /var/lib/ejabberd/ebin
配置ejabberd.cfg,添加我们的module
{modules,
[
{mod_register, [{access, register}]},
…
{mod_http_hello_world, []} % []mod_http_hello_world:start/2中的第二个参数
]}.
到这里步骤和jabberd moudle 开发(一)中,基本相似,可是我们要让我们的module处理http请求,那么我们需要继续下面的配置,打开ejabberd.cfg,找到:
{5280, ejabberd_http, [http_poll, web_admin]}
修改如下:
{5280, ejabberd_http, [http_poll, web_admin,
{request_handlers, [{["hello_world"], mod_http_hello_world}
]}]}
好了,重启ejabberd,在浏览器中输入:
http://example.com:5280/hello_world
页面会显示Hello World,一切正常。
我们开头说过我们的http module要把当前服务器中所有登录的用户打印出来。让我们修改一下process/2函数:
process(_Path, _Request) ->
[Username ++ "@" ++ Server || {Username, Server} <- ejabberd_auth:dirty_get_registered_users()].
我们通过ejabberd_auth:dirty_get_registered_users/0获取用户列表,随后显示出来。
_Request包含请求的方法,路径,参数,post数据,认证的信息,可以更好的处理HTTP 请求。
最后说明一下我们这个modoule是如何被ejabberd执行的,毫无疑问,通过我们对ejabberd_http部分的配置,ejabber 加载了新的http 处理模块,在其ejabberd_http.erl中,当收到http请求时,其遍历所有的http module,找到Path匹配的Moudle,然后执行Module:process/2函数,从而做到http 请求的分发。如果没有找到合适的handler,那么将调用ejabberd_web:error(not_found)。
下节我们开发一个XMPP 机器人模块。
分享到:
相关推荐
ejabberd-15.07-osx-installer.app.zip是一个针对Mac OS X平台的ejabberd安装包,用于在苹果操作系统上部署ejabberd服务器。 首先,我们需要理解XMPP(Extensible Messaging and Presence Protocol)协议,它是...
在标题"Ejabberd-2.1.10-mac"中,我们可以推断这是一份针对Mac平台的Ejabberd服务器软件的特定版本,即2.1.10。这个版本可能包含了针对Mac OS X系统的优化和适配,使得在苹果电脑上部署和运行Ejabberd变得更加便捷。...
ejabberd-16.02-linux-x86_64-installer.run实时聊天,运行在linux系统下,可直接安装使用版本为ejabberd-16.02
在"ejabberd windows installer"中,文件"ejabberd-2.1.10-windows-installer.exe"是ejabberd的一个特定版本(2.1.10)的Windows安装程序。这个安装程序会引导用户完成ejabberd的配置过程,包括选择安装路径、设置...
点击即可安装。。。一路next下去
埃雅伯德莫姆ejabberd-mod-mam是ejabberd XMPP服务器的模块,该模块使用后端实现“消息存档管理”功能 。 该模块针对ejabberd的所谓“社区版”,可以在github上ejabberd的当前分支上找到。 ejabberd-mod-mam正在进行...
windows环境下的ejabberd。。。点击即可安装
Ejabberd-Packet-Interceptor 拦截和更改消息的 Ejabberd 模块这个模块接受一个 Ejabberd 消息包,改变消息体并发送它。 该模块挂钩 packet_filter 并检查每个数据包是否有消息正文。 如果有消息正文,它会对其进行 ...
在这个名为"ejabberd-load-test"的项目中,我们将探讨如何使用JavaScript进行ejabberd的负载测试。 在ejabberd负载测试中,主要关注以下几个关键知识点: 1. **XMPP协议**:ejabberd基于XMPP(Extensible ...
ejabberd-XMPP和Web聊天 将与结合在一起的即时消息服务器,以创建支持强加密并与任何Web浏览器或专用XMPP客户端(例如,Pidgin)一起使用的实时聊天服务器。 ejabberd是功能强大的XMPP服务器,它支持群集,实时升级...
ejabberd 模块的权威指南从编写 ejabberd 模块开始对我来说真的很痛苦。 周围没有太多文档,大多数文章/博客文章已经过时。 本指南应涵盖从头开始创建 ejabberd 模块,并且没有或几乎没有编写 erlang 的经验。 但是...
ejabberd stan ack v0.6 当ejabberd服务器已收到您的消息时,此模块将向您的发件人发送确认/确认消息,而当邮件的收件人已收到您的消息时,此模块将发送另一条确认/确认消息。 在这方面,它提供与移动聊天应用程序...
ejabberd-2.1.11-osx-installer.app是ejabberd服务器的Mac OS X安装程序,用于在Apple设备上部署和运行服务器。 在iOS应用中集成XMPP和ejabberd服务器,首先需要了解XMPP的基本概念。XMPP基于XML,通过实时传输协议...
在"ejabberd-14.07.app"这个文件中,我们可以预期这是一个ejabberd服务器的特定版本应用包,可能包含了ejabberd的源代码、配置文件、安装脚本以及必要的文档。安装和配置ejabberd通常涉及以下几个步骤: 1. **下载...
此路径是~/.ejabberd-modules或由ejabberdctl.cfg的CONTRIB_MODULES_PATH设置定义。 编辑已安装模块的conf目录中提供的配置文件,并根据需要进行更新。 然后将更改应用于您的主要ejabberd配置。 在将来的版本中,...
从版本16.12开始,ejabberd根据源树中包含的该容器的工作情况拥有自己的docker容器。 在此博客文章中查看更多内容。 我们可以期望将来对此进行更多的工作。 版本 当前版本: 21.01 Docker标记名称基于git分支和...
本项目“Android IM开发 Ejabberd+asmck+spack”提供了一套完整的解决方案,包括服务器端、Android客户端以及PC端客户端。 **Ejabberd服务器** Ejabberd是一款开源的XMPP(Extensible Messaging and Presence ...
**二、连接ejabberd服务器** 连接ejabberd服务器需要创建XMPPTCPConnection对象。以下代码展示了如何建立连接: ```java XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() .set...
在ejabberd-15.02这个版本中,可能包含了以下组件和功能: - **核心组件**:如服务器核心、路由引擎、认证模块、存储模块等。 - **安全与隐私**:支持TLS/SSL加密,提供端到端的加密聊天选项,保护用户数据的安全。...
IM(ejabberd)服务器的客户端android开发的代码详解,该代码例子包含单聊、群聊、发送文字、发送及接收文件等功能。