第一次写ejabberd gen_mod module 服务端简单返回数据

最近两天 看了一下 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]).
~                                                                                                                                                            
~                                                                                                                                                            
~                                                                             

你可能感兴趣的:(mysql,.net,xml)