我的代码中有钩子处理程序:
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?
谢谢。
答案 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.