五 12
Rei技术 XMPP, 编程
4. XMPP 扩展
XMPP 的核心部分是一个轻量级的协议,不足以满足一般即时聊天应用的需求。 XMPP 的社区在核心协议的基础上定义了众多的扩展协议,用以实现电子名片、二进制传输等功能。
4.1 通过 vcard-temp 获取电子名片
电子名片 (个人资料) 是聊天程序中常见的功能。通过电子名片,用户可以查看联系人除了 JID 地址外的其他信息,如:昵称,全名,个人网站 URL 等。
XMPP 的扩展之一 [XEP-0054] vcard-temp [9] 实现了电子名片。要在聊天程序中支持电子名片,需要客户端和服务端都实现 vcard-temp 扩展。知名的 XMPP 服务器大都支持 vcard-temp 扩展,如 jabber.org, gtalk 等。
4.1.1 请求电子名片
vcard-temp 扩展规定的电子名片访问规则如下:
客户端:
<iq from='stpeter@jabber.org/roundabout'
id='v3'
to='jer@jabber.org'
type='get'>
<vCard xmlns='vcard-temp'/>
</iq>
该查询使用 get 类型的 Iq 包请求 jabber.org 服务器返回 jer 用户的 vcard 数据。 More
五 10
Rei技术 XMPP, 编程
3. XMPP 核心数据包
XMPP 的核心数据包类型有Precense,Message,Iq ,此外加上初始化 stream 用到的 Stream 数据包。这些数据包是 XMPP 信息传输的载体,被用于 XMPP 核心功能和扩展功能的实现。
该部分仅对 XMPP 中使用的数据包进行概览,用于感受基于 XML 的数据包与其他非 XML 数据包协议的差别,不能替代 IETF 关于 XMPP 协议的 RFC 文档 [3920] [3921][3][4],以及 XMPP 的扩展协议文档 [extensions][5] 中描述。
3.1 公有属性
在 XML stream 中,每个数据包都是 XML 格式纯文本。而每个 XML 数据包有以下公有属性:
- to 数据包要发送的目的地址
- from 数据包发送的源地址
- id 数据包标示符
此三项属性在 XML stanza 中最为常见。
to 和 from 属性用于服务器决定该数据包的路由规则。某些情况下,to 和 from 属性可以只有一个,例如:客户端向服务端发送设置配置的 Iq 包只含有 to (不向外路由),客户端向联系人发送 Message 只含有 to (from 属性总是被改写为客户端的地址)。
id 用于节点间判断请求和应答数据包的对应状况,大多数情况可以不处理。 More
五 09
Rei技术 XMPP, 编程
1. XMPP 优缺点
XMPP (Extensible Messaging and Presence Protocol) (前称Jabber) 是一种以 XML 为基础的开放式即时通讯协议,是经由互联网工程工作小组 (IETF) 通过的互联网标准。[1]
1.1 XMPP 协议的优点
1.1.1 可扩展性
XMPP 的数据传输基于 XML 格式,可扩展性强。XMPP 的核心协议栈 (Core Stack) 部分只定义了基础的 Presence,Message,Iq 等最主要数据格式和传输逻辑,更多的功能则通过定义扩展 (Extensions) 实现。
1.1.2 受 IETF 组织规范
Internet Engineering Task Force (IETF) 在2002年开始规范 XMPP 协议,使其协议的修订和扩展的添加都经过严格的流程审核,防止 XMPP 协议因缺乏标准而分裂。并且这也保证了 XMPP 协议是完全开放的。
1.1.3 应用广泛
XMPP 协议的应用比其他开放即时通讯协议更为广泛。较有名的使用 XMPP 协议的聊天服务有 Google Gtalk 和 Facebook Chat 等。此外,XMPP 在各平台下都有若干服务端、客户端和程序库的实现,二次开发时成本较低。
XMPP 协议的可扩展性和开放性是该协议被广泛应用的保证。 More
Newer Entries
近期评论