在离线用户的好友请求中缺少元数据
我们正在尝试在XMPP(Ejabberd)中自定义好友请求,以便我们可以在好友请求中发送其他元数据,如下所示(显示请求作为登录ejabberd.log文件)。 问题在于当朋友离线时,当朋友请求在最终用户上线时最终传递给最终用户时,XMPP不会发送其他元数据(jidValue,profileImageURL等)。 但是,如果朋友在线,发送请求时,所有额外的元数据确实被传送。 有没有人知道为什么离线用户不会发送额外的元数据以及如何解决?
这里是日志文件的内容:
2015-12-06 18:07:35.127 [debug] <0.1763.0> @ejabberd_receiver:process_data:349流中接收到XML = <<“https://jabber.chatter.io/profiles/chatapp_profile56646b3323232.232323232.png “age = ”0 “gender = ”“message = ”“>”>>
包{xmlel,<<“presence”>>,[{<<“type”>>,<<“subscribe”>>},{<<“to”>>,<<“17032345678jinglebells@chat.chatter.io “>>},{<<” jidValue “>>,<<” 1408123467abcd@chat.chatter.io/MCRJ “>>},{<<” profileImageURL “>>,<<” HTTPS://jabber.chatter .IO /简档/ chatapp_profile56646b3323232.232323232.png “>>},{<<” 年龄 “>>,<<” 0 “>>},{<<” 性别“>>,<< >>},{< < “消息” >>,<< >>}],[{xmlel,<< “×” >>,[{<< “的xmlns” >>,<< “电子名片-温度:X:更新” >>} ],[{xmlel,<< “照片” >>,[],[]}]}]}
当朋友不在线时,朋友请求不会按原样存储:存在不用于离线传送。 相反,ejabberd查找未决请求,并在用户连接时生成新请求。
我创建了一张票以支持ejabberd Github上的功能:https://github.com/processone/ejabberd/issues/870
请注意,您的数据包是错误的,因为您似乎将您的扩展程序放在属性上以方便使用。 他们应该在自定义的子标签上,使用自定义的xmlns。 无论如何,你所做的都是无效的。 自定义应该看起来与x xmlns vcard内容类似。 在jabber:client命名空间中,您所添加的属性不是XMPP预期的。
我将以下XML从我的iOS客户端代码发送给另一位处于脱机状态的用户
<presence type="subscribe" to="918054824047thj@chat.domain.io">
<profile xmlns="custom:data">
<profileImageURL>https://jabber.domain.io/profiles/slocamo_profile5667ec5aea78e2.08175827.png</profileImageURL>
<age>0</age>
<gender/>
<message/>
<jidValue>918054824047jitu@chat.domain.io/jitu</jidValue>
</profile>
<x xmlns="vcard-temp:x:update"><photo/></x>
</presence>
但是当用户上网时,他只收到以下XML
<presence xmlns="jabber:client" from="918054824047thj@chat.domain.io" to="918054824047jitu@chat.domain.io" type="subscribe">
<status/>
</presence>
let me know how to fix this
链接地址: http://www.djcxy.com/p/93529.html
上一篇: Missing metadata in friend request for offline users
下一篇: Robbiehanson xmpp framework for iOS not receiving chat messages