您正在查看 "Xep" 分类下的文章
2008-06-06 22:52
IM中,通常有需要保存一些用户的私有数据到服务器,比如用户的本地配置信息。此功能可以通过 XEP-0049: Private XML Storage实现。
如:
Example 1. 客户端保存私有信息
CLIENT:
<iq type="set" id="1001">
<query xmlns="jabber:iq:private">
<exodus xmlns="exodus:prefs">
<defaultnick>Hamlet</defaultnick>
</exodus>
</query>
</iq>
SERVER:
<iq type="result"
from="hamlet@shakespeare.lit/denmark"
to="hamlet@shakespeare.lit/denmark"
id="1001"/>
Example 2. 客户端获取私有信息
CLIENT:
<iq type="get" id="1002">
<query xmlns="jabber:iq:private">
<exodus xmlns="exodus:prefs"/>
</query>
</iq>
SERVER:
<iq type="result"
from="hamlet@shakespeare.lit/denmark"
to="hamlet@shakespeare.lit/denmark"
id="1002">
<query xmlns="jabber:iq:private">
<exodus xmlns="exodus:prefs">
<defaultnick>Hamlet</defaultnick>
</exodus>
</query>
</iq>
用户可以保存多个不同的信息到服务器,多个信息可以设置不同的 namespace, 类似 key:value 中key的作用。
Openfire 支持XEP-0049, 其中的表结构为:
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| username | varchar(64) | NO | PRI | | |
| name | varchar(100) | NO | PRI | | |
| namespace | varchar(200) | NO | PRI | | |
| value | text | NO | | | |
+-----------+--------------+------+-----+---------+-------+
根据表结构可以看到,实际服务器实现时候把name和namespace加起来作为区分不同key标志。name就是example1中的exodus,namespace 为exodus:prefs |
|
|