XMPP支持多用户聊天中的头像

时间:2015-06-20 09:23:34

标签: xmpp ejabberd smack

我正在使用Smack和ejabberd创建(又一个)移动聊天应用。我正在尝试确定实现用户头像以在多用户聊天室中使用的最佳方式,当然还有名册成员。看看可能的解决方案,我可以看到:

  1. XEP-0008基于IQ的头像 - 头像限制为64 x 64像素,太小。
  2. XEP-0153基于vCard的头像 - 易于为名册和MUC会议室中的用户实施,但是(a)this等来源似乎表明每次登录时都需要下载自己的vcard(这是严格的吗?我在规格中看不到这一点,而且(b)应该小于96×96像素(仍然很小)
  3. XEP-0084基于个人事件协议的用户头像 - 我不清楚如何根据此协议检索多用户聊天室中所有用户的头像。加入聊天室后,我需要订阅所有用户的元数据节点,以及随后加入的用户?还要在他们离开房间时取消订阅?我认为这将是非常丑陋和笨拙的实施。
  4. 有人可以指出我正确的方向,或指出我可能误解的地方吗?感谢。

1 个答案:

答案 0 :(得分:0)

我想解决此问题的最佳方法可能是通过HTTP服务器在带外存储/加载图像。图像可以用文件名存储,例如" username_imagehash.xxx"。对于不在一个人名单中的用户(例如多用户聊天中的陌生人),我们通过从他们的vCard PHOTO字段中检索到的URI来获取他们的头像。每次重新/遇到陌生人时,我们都会重新加载他们的vCard,并且可以通过更改vCard中的URI来确定是否需要重新下载他们的照片。

一旦用户被添加到名单中,我们就会通过XEP-0084订阅他们的头像更新,发布相同的URI(参见XEP-0084中的示例4.)。

我认为这符合所有要求,一旦我实施,我会发现。我可以理解在标准XMPP客户端中不是这样做的,因为它依赖于与XMPP服务分开的HTTP服务器(并且需要处理HTTP服务器安全性 - 用户授权/认证)。

欢迎反馈!