微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么ejabberd收到消息后不向客户端发送消息?

如何解决为什么ejabberd收到消息后不向客户端发送消息?

我正在使用REST API / api / send_message 从android设备将消息发送到受阻服务器,并在服务器端成功接收,但是在收到消息后ejabberd服务器未发送给客户端。我从这样的客户端发送一条消息: dictify(df,['n1','n2']) {'s1': {'A': [{'C': 3,'D': 4},{'C': 5,'D': 6}],'B': {'P': 6,'Q': 3}}} 我还在ejabberd上登录on_user_send_packet列表程序,并打印数据包的数据,该数据与我从客户端发送的数据相同。 我在android中使用smack库。 我收到消息的服务器端模块部分:

192.168.1.24:5443/api/send_message?"type"= "normal",&"from"= "admin@faiqkhan-VirtualBox",&"to"= "faiq@faiqkhan-VirtualBox",&"subject"= "Restart",&"body"="In 5 minutes"

服务器日志:

on_user_send_packet({#message{from = From,body = Body,subject = Subject} = Packet,C2sstate}) ->
      ?INFO_MSG("mod_stanza_ack message packet: ~p~n",[Packet]),?INFO_MSG("mod_stanza_ack message subject: ~p~n",[Subject]),?INFO_MSG("mod_stanza_ack message body ignored: ~p~n",[Body])
    end,{Packet,C2sstate}.

尝试使用smack库的回调在客户端接收消息

API call send_message [{<<"type">>,<<"normal">>},{<<"from">>,<<"67456efc-be57-4cbd-a176-527de2dce19d@faiqkhan-virtualBox">>},{<<"to">>,<<"e5d6d83c-ea77-4d10-aaac-4e0e38899ac2@faiqkhan-virtualBox">>},{<<"subject">>,<<"Restart">>},{<<"body">>,<<"In 5 minutes">>}] from ::ffff:192.168.1.46:51597
13:43:14.298 [info] mod_stanza_ack message packet: {message,<<"4325851467592961166">>,normal,<<>>,{jid,<<"67456efc-be57-4cbd-a176-527de2dce19d">>,<<"faiqkhan-virtualBox">>,<<>>},<<"e5d6d83c-ea77-4d10-aaac-4e0e38899ac2">>,[{text,<<"Restart">>}],<<"In 5 minutes">>}],undefined,[],#{}}
13:43:14.298 [info] mod_stanza_ack message subject: [{text,<<"Restart">>}]
13:43:14.298 [info] mod_stanza_ack message body ignored: [{text,<<"In 5 minutes">>}]

我是否想念客户端上的一些监听器?

解决方法

它对我来说正常工作。我注册帐户adminfaiq,并使用Tkabber客户端登录到faiq帐户,然后发送API查询:

ejabberdctl send_message normal admin@localhost faiq@localhost Restart In5minutes

客户端完美接收消息:

<message to='faiq@localhost'
    from='admin@localhost'
    id='18338888910541408674'>
  <archived by='faiq@localhost'
    id='1599730686404819'
    xmlns='urn:xmpp:mam:tmp'/>
  <stanza-id by='faiq@localhost'
    id='1599730686404819'
    xmlns='urn:xmpp:sid:0'/>
  <body>In5minutes</body>
  <subject>Restart</subject>
</message>

您可以使用Gajim或Psi等著名的Jabber桌面客户端登录,以检查您的API调用是否正常运行。这样,您将知道问题出在您的客户中还是在哪里……

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。