XMPP - vCard Avatar更新通知到脱机号码簿

问题描述:

当用户A和用户B都联机并且其中一个用户改变了头像时,用户的所有名单都会通过sha1哈希接收vcard-temp更新元素的存在段用作头像的图像。XMPP - vCard Avatar更新通知到脱机号码簿

<presence from='[email protected]/balcony'> 
    <x xmlns='vcard-temp:x:update'> 
    <photo>sha1-hash-of-image</photo> 
    </x> 
</presence> 

然而,对于这在当时是离线的用户不产生这样的通知/节,所以,这样的客户端显示在显示化身没有变化。

如果离线用户可以从名单中获取v卡更新,那么当有任何更改时,该如何更改?即使没有变化,我也不希望为所有名册申请vCard。

我认为支持该协议的客户端应该在所有存在数据包中包含化身,而不仅仅是变化。正如在XEP-0153: vCard-Based Avatars解释:

如果客户端支持本文中所定义的协议,它必须包括在每一个存在的 更新子元素广播发送,并且应该 还包括更新子中定向存在节(例如, 在加入多用户聊天(XEP-0045)[5] 房间时发送的定向存在)。

这意味着离线用户将获得正确的存在,并且可以在他们都在线时更新头像。

+0

Hi @mickaël-rémond是的,这是问题,**两者必须同时在线**,只有在更改子项包含在所有存在段中时,才能通知头像更改。即使其他用户在更改头像后离线,我也希望显示头像更改。 – sainiankit

+0

然后,您需要依赖其他机制,例如:更新查询头像或使用基于PEP/Pubsub的机制。 –