为了保护即时消息用户和任何其他实体的隐私, 出席信息和可用性信息仅向用户已批准的其他实体披露. 当一个用户同意其他用户可以看到它的出席信息, 这个实体被称为对于用户的出席信息有一个订阅. 订阅超越了会话; 实际上, 它一直存在直到订阅者取消订阅或被订阅者取消曾经授权的订阅为止. 在XMPP中订阅是通过发送包含特定属性的出席信息节来管理的. 注意: 在订阅和名册之间有重要的交互; 这些定义在 名册条目和出席信息订阅的集成Integration of Roster Items and Presence Subscriptions (第八章), 而且读者必须参考那一章才能完整地理解出席信息订阅.

请求一个订阅


对另一个实体的出席信息的订阅请求是由发送一个类型为"subscribe"的出席信息节来开始的. 例子: 发送一个订阅请求:

<presence to='juliet@example.com' type='subscribe'/>


关于客户端和服务器在订阅请求中的职责, 参考 出席信息订阅Presence Subscriptions(第五章第一节第六小节).

处理一个订阅请求


当一个客户端从另一个实体接收到一个订阅请求, 它必须(MUST)批准这个请求(发送一个类型为"subscribed"的出席信息节)或拒绝这个请求(发送一个类型为"unsubscribed"的出席信息节). 例子: 批准一个订阅请求:

<presence to='romeo@example.net' type='subscribed'/>


例子: 拒绝一个出席信息订阅的请求:

<presence to='romeo@example.net' type='unsubscribed'/>



从另一个实体取消一个订阅


如果一个用户想取消一个曾经允许的订阅请求, 它发送一个类型为"unsubscribed"的出席信息节. 例子: 取消一个曾经允许的订阅请求:

<presence to='romeo@example.net' type='unsubscribed'/>



取消对于另一个实体的出席信息的订阅


如果用户想取消对于另一个实体的出席信息的订阅, 它发送一个类型为"unsubscribe"的出席信息节. 例子: 取消对一个实体的出席信息的订阅:

<presence to='juliet@example.com' type='unsubscribe'/>