Jabber 用户头像 vCard-base avatar JEP-0153

Jabber 用户头像保存另外一种方法 vCard-base avatar JEP-0153
 
psi使用的这种方法,不过要0.11以后的版本。
缺点:和vCard信息绑定在一起,每次更新一大堆内容,presence广播里面每次也需要增加额外的冗余信息。
优点:服务器实现简单,无需另外编程。

使用流程:

保存头像方法:在 vCard 中增加一个 PHOTO 标签
<iq from='timyang@jabber.org'
    type='set'
    id='vc1'>
  <vCard xmlns='vcard-temp'>
    <BDAY>1476-06-09</BDAY>
    <ADR>
      <CTRY>Italy</CTRY>
      <LOCALITY>Verona</LOCALITY>
      <HOME/>
    </ADR>
    <NICKNAME/>
    <N><GIVEN>Tim</GIVEN><FAMILY>Yang</FAMILY></N>
    <EMAIL>jcapulet@shakespeare.lit</EMAIL>
    <PHOTO>
      <TYPE>image/jpeg</TYPE>
      <BINVAL>
        Base64-encoded-avatar-file-here!
      </BINVAL>
    </PHOTO>
  </vCard>
</iq>


用户广播 <presence> 时候加上 avatar 的信息

<presence from='timyang@jabber.org/balcony'>
  <x xmlns='vcard-temp:x:update'>
    <photo>sha1-hash-of-image</photo>
  </x>
</presence>
    
好友获取一个用户 avatar 信息的方法,查询vCard:
<iq from='romeo@montague.net/orchard'
    to='timyang@jabber.org'
    type='get'
    id='vc2'>
  <vCard xmlns='vcard-temp'/>
</iq>

Server Returns vCard on Behalf of User
<iq from='timyang@jabber.org'
    to='romeo@montague.net/orchard'
    type='result'
    id='vc2'>
  <vCard xmlns='vcard-temp'>
    <BDAY>1476-06-09</BDAY>
    <ADR>
      <CTRY>Italy</CTRY>
      <LOCALITY>Verona</LOCALITY>
      <HOME/>
    </ADR>
    <NICKNAME/>
    <N><GIVEN>Juliet</GIVEN><FAMILY>Capulet</FAMILY></N>
    <EMAIL>jcapulet@shakespeare.lit</EMAIL>
    <PHOTO>
      <TYPE>image/jpeg</TYPE>
      <BINVAL>
        Base64-encoded-avatar-file-here!
      </BINVAL>
    </PHOTO>
  </vCard>
</iq>
posted @ 2007-08-19 23:34  eafy.ye  阅读(761)  评论(0编辑  收藏  举报