ejabberd - 自定义 iq 处理程序
Posted
技术标签:
【中文标题】ejabberd - 自定义 iq 处理程序【英文标题】:ejabberd - custom iq handlers 【发布时间】:2017-01-06 13:14:36 【问题描述】:我创建了简单的模块。这是代码
-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#iqtype = 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);
提出请求时
服务器断开了我的连接。我试图找到类似的问题,但其中一些问题更大。请帮我解决这个问题
【问题讨论】:
【参考方案1】:你不能在最近的 ejabberd 版本中使用 xmlelement 元组,正确的代码应该是这样的:
IQ#iqtype = result,
sub_el = [#xmlelname = <<"value">>,
children = [xmlcdata, <<"Testing...">>]].
【讨论】:
以上是关于ejabberd - 自定义 iq 处理程序的主要内容,如果未能解决你的问题,请参考以下文章