Ejabberd从钩子发送消息

时间:2011-08-01 06:58:07

标签: erlang hook ejabberd

我的代码中有钩子处理程序:

ejabberd_hooks:add(sm_register_connection_hook, "localhost", ?MODULE, on_register, 80),

on_register(SID, JID, INFO) ->
    {_, _, _, _, Name, _, _} = JID,
    ok.

例如,我想将此名称发送到gen_server,如何通过名称从此挂钩向gen_server发送消息?我怎么能在on_register中知道gen_server的pid?

谢谢。

1 个答案:

答案 0 :(得分:0)

on_register是?MODULE的基本模块功能。如果gen_server是单例服务器,您可以使用gen_server:call(?MODULE,{name,Name})或gen_server:cast(?MODULE,{name,Name})将名称发送给它。

所以结果如下:

on_register(SID, JID, INFO) ->
    {_, _, _, _, Name, _, _} = JID,
    gen_server:call(?MODULE, {name, Name}),
    ok.