【问题标题】:Adding name space to ejabberd server将名称空间添加到 ejabberd 服务器
【发布时间】:2011-01-21 14:40:08
【问题描述】:

我正在使用 ejabberd-2.1.2 服务器。如何将新的名称空间添加到现有的 ejabberd 服务器。 我想添加名称空间 ('http://jabber.org/protocol/rosterx') XEP-0144 名册项目交换。

谢谢, 萨蒂。

【问题讨论】:

  • 你想做什么?自定义的 X 节可以解决问题吗?您是否尝试在服务器端添加自定义节处理?

标签: xmpp ejabberd spectrum strophe


【解决方案1】:

创建一个模块,将其命名为mod_rosterx.erl。将其添加到您的 ejabberd.cfg 文件中。

此文件的内容应类似于以下内容。您需要在process_local_iq 函数中实际编写代码。此外,这将处理寻址到服务器的 IS 节,而不是寻址到其他客户端。根据需要进行调整!

-module(mod_rosterx).
-behavior(gen_mod).

-export([start/2, stop/1, process_local_iq/3]).

-include("ejabberd/src/ejabberd.hrl").
-include("ejabberd/src/jlib.hrl").

-define(NS_ROSTERX, "http://jabber.org/protocol/rosterx").

start(Host, Opts) ->
    IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
    mod_disco:register_feature(Host, ?NS_ROSTERX),
    gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_ROSTERX, ?MODULE, process_local_iq, IQDisc).

stop(Host) ->
    gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_ROSTERX).


process_local_iq(From, To, {iq, ID, set, NS, Language, SubElement}) ->
    {iq, ID, error, NS, Language, []};
process_local_iq(_, _, {iq, ID, get, NS, Language, SubElement}) ->
    {iq, ID, error, NS, Language, []}.

【讨论】:

  • 您能否详细说明“此外,这将处理发送给服务器的 IS 节,而不是发送给其他客户端。根据需要进行调整!”...这将有很大帮助...谢谢
猜你喜欢
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 2021-02-02
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多