最近两天 看了一下 ejabberd的用法,关于http request handler 在process-one.net上说的很清楚,很件的就实现一个Demo.
对于gen_mod 只写个start/2 stop/1 也很简单。但想做点事情对我来说有点难度了。
带着疑问开始探索了,有人会 但不想直接让人家教,只题醒一下就够了。不多说了
1、用了ejabberdhooks
2、用了ejabberdrouter
3、代码关键地方是11行和25行(不做解释,我也是朦胧懂,期待中。。。)
-module(my_module).
-behaviour(gen_mod).
-include("ejabberd.hrl").
-include("jlib.hrl").
%% gen_mod callback
-export([start/2, stop/1, test/3]).
start(Host, _Opt) ->
?DEBUG("-start my_module langxianwu~p,Host=~p",[lxwstart,Host]),
ejabberd_hooks:add(user_send_packet,Host,?MODULE,test,50),
?DEBUG("-start my_module langxianwu~p",[lxwend]).
stop(_Host) -> ok.
test(From, To, Packet) ->
ErrText = "Your dead LOL langxianwusendmessage",
Lang = xml:get_tag_attr_s("xml:lang", Packet),
Err = jlib:make_error_reply(Packet, ?ERRT_RESOURCE_CONSTRAINT(Lang, ErrText)),
#jid{user=User} = To,
?DEBUG("langxianwutest1 packet Errtext= ~p,~n Lang ~p,~n Err=~p,~n User=~p ~n", [ErrText, Lang, Err,User]),
case User of
langzhe ->
?DEBUG("langzhetestUser= ~p,~n ", [User]);
_-> ?DEBUG("langzhetestuser~p~n",[ok]),
ejabberd_router:route(To, From, Err)
end,
%%ejabberd_router:route(To, From, Err),
?DEBUG("langxianwutest2 packet from ~p to ~p :~p", [From, To, Packet]).
~
~
~
- 大小: 69.8 KB
分享到:
相关推荐
在ejabberd中,`mod_privacy_odbc.erl`是用于处理用户隐私列表模块的一部分,该模块与数据库(通常通过ODBC接口)交互来存储和管理用户的隐私设置。然而,题目指出`mod_privacy_odbc.erl`的实现并没有完全遵循XMPP...
ejabberd_rest_client是与ejabberd服务器交互的一个客户端库,它利用ejabberd的API接口,通过RESTful方式来操作ejabberd服务器,实现了对ejabberd服务器的远程控制和数据管理。 ejabberd API是ejabberd服务器提供的...
mod_mam_custom 将MAM(XEP-0313)存档首选项和消息从内部mnesia DB导出到MySQL DB 描述 将MAM存档首选项和消息从内部mnesia DB导出到MySQL DB。 根据数据库的大小,这可能会花费大量时间。 先决条件 您应该在配置...
mod_gcm是一个ejabberd模块,可使用Google Cloud Messaging API将离线消息作为PUSH通知发送给Android。 考虑使用实现并与许多PUSH服务一起使用的 。 该模块与无关。 该模块的主要目标是通过Google Cloud ...
最简单的方法是在ejabberd.yml模块设置下启用mod_offline_my并设置某些配置选项。 配置选项 mod_offline_my需要一些参数才能正常运行。 应在ejabberd.yml mod_offline_my下设置以下选项: host (必填, string )-...
点击即可安装。。。一路next下去
ejabberd是一款开源的XMPP服务器,广泛用于构建实时通信系统,如即时消息、VoIP、协作工具等。在部署ejabberd服务器后,为了确保其正确配置和功能正常,通常需要一个客户端来进行测试。在这个场景中,"ejabberd ...
ejabberd是一款强大的即时通讯服务器,它基于Jabber/XMPP协议,这使得ejabberd能够支持丰富的交互式通信功能,如文本聊天、音视频通话、群聊、文件传输等。作为一款开源软件,ejabberd遵循GPLv2许可证,允许用户自由...
在Android平台上进行即时通讯(Instant Messaging,简称IM)开发是一项技术含量较高的工作,涉及到网络通信、数据加密、用户体验等多个方面。本项目“Android IM开发 Ejabberd+asmck+spack”提供了一套完整的解决...
Ejabberd-Packet-Interceptor 拦截和更改消息的 Ejabberd 模块这个模块接受一个 Ejabberd 消息包,改变消息体并发送它。 该模块挂钩 packet_filter 并检查每个数据包是否有消息正文。 如果有消息正文,它会对其进行 ...
IM(ejabberd)服务器的客户端android开发的代码详解,该代码例子包含单聊、群聊、发送文字、发送及接收文件等功能。
iOS即时通讯系统在近年来变得越来越流行,而XMPP(Extensible Messaging and Presence Protocol)作为一款开放标准的协议,被广泛应用于此类系统中。本文件主要关注的是如何在iOS平台上使用XMPP与ejabberd服务器进行...
ejabberd是一款开源的XMPP服务器,它基于Erlang编程语言,提供高度可扩展性和高并发处理能力。在Windows环境下,ejabberd通常通过安装程序进行部署,这正是"ejabberd windows installer"所涉及的内容。Ejabberd不...
Ejabberd是一款流行的开源即时通讯服务器软件,具有高度灵活性和可扩展性。下面是Ejabberd安装配置的详细知识点解析: Ejabberd下载 Ejabberd的下载可以从官方网站获取,目前支持多种操作系统,包括Windows、Linux...
ejabberd安装包,很好的工具!适合安装!一定会很好用的!
ejabberd是一个开源的XMPP服务器,它提供了稳定、安全且可扩展的服务,支持多种编程语言的客户端接口。Smack是Java和Android平台上常用的XMPP客户端库,它提供了丰富的API,使得开发者可以轻松地构建XMPP应用。 **...
标题中的“AnyQ服务端源码.zip”表明这是一个包含了AnyQ服务端源代码的压缩文件,主要用于实现多种即时通讯协议的服务器。这个服务端能够支持Jabber、gmail、icq和msn协议,同时也兼容xmpp(Extensible Messaging ...
即时通讯服务端测试工具是开发过程中不可或缺的一部分,特别是在构建基于XMPP协议的系统时。XMPP(Extensible Messaging and Presence Protocol)是一种开放标准,用于实时通信和数据交换,广泛应用于聊天应用、协作...
Ejabberd 模块在用户离线时发送帖子。 该模块基于 、 以及来自网络的大量代码和技巧,以适应与 Ejabber 14.12 一起使用。 安装 克隆这个存储库: git clone git@github.com:raelmax/mod_http_offline.git 更改...