【问题标题】:ejabberd - custom iq handlersejabberd - 自定义 iq 处理程序
【发布时间】:2023-04-11 10:48:01
【问题描述】:

我创建了简单的模块。这是代码

-module(mod_conversations).
-behaviour(gen_mod).
-export([start/2, stop/1, process_local_iq/3]).
-include("ejabberd.hrl").
-include("logger.hrl").
-include("jlib.hrl").
-define(IQ_CUSTOM, <<"jabber:iq:conversations">>).
start(Host, _) ->
    gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?IQ_CUSTOM, ?MODULE, process_local_iq, one_queue),
ok.
stop(Host) ->
    gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?IQ_CUSTOM),
ok.
process_local_iq(From,_ ,IQ) ->
IQ#iq{type = result, sub_el = [{xmlelement, <<"value">>, [], [{xmlcdata, <<"Testing...">>}]}]}.

当我使用 strophe.js var iq = $iq({type: 'get', to: 'some host'}).c('query', {xmlns: 'jabber:iq:conversations'}); connection.sendIQ(iq); 提出请求时

服务器断开了我的连接。我试图找到类似的问题,但其中一些问题更大。请帮我解决这个问题

【问题讨论】:

    标签: xmpp ejabberd


    【解决方案1】:

    你不能在最近的 ejabberd 版本中使用 xmlelement 元组,正确的代码应该是这样的:

    IQ#iq{type = result,
          sub_el = [#xmlel{name = <<"value">>,
                           children = [{xmlcdata, <<"Testing...">>}]}]}.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 2013-10-19
      • 2020-03-16
      • 2014-05-18
      • 2016-06-16
      • 2011-07-27
      • 2017-12-18
      相关资源
      最近更新 更多