jabber(xmpp)服务协议的概述中文版.pdf
文本预览下载声明
Jabber 协议 概述
1.4 版Jabber服务协议的概述
1. 介绍
Jabber是一个由开源社区发起并领导开发的即时消息和在线状态
的系统。Jabber 系统和其它即时消息(IM)服务的一个功能上的差
别在于Jabber 拥有开放的XML 协议。在保持Jabber1.0 版本有关消
息核心以及在线状态的协议的基础上,增加了一些必要的扩展。本文
档将对Jabber 服务器 1.4版的Jabber 协议进行介绍。
在XML 上下文的数据流中,Jabber 开放的XML 协议包括三个顶级
XML 元素:
message/
presence/
iq/(info/query)
每一个元素通过属性和名字空间包含大量的数据,这些属性和名
字空间都是Jabber 的组成部分(但不包括为特殊应用的名字空间应
用)。下面将描述整个Jabber 协议。如果您想获得关于Jabber 系统
结构的信息,请查看名为 Jabber 技术概述的文档
(/general/html/overview.html )。
2. XML 流
一个Jabber 会话由两个平行的XML 流组成,一个从客户端到服务
器端,另一个从服务端到客户端。当一个Jabber 客户端连接上一个
Jabber 服务器时,这个客户端将发起一个客户端-服务器的XML 流,
同时作为响应,服务器也将发起一个服务器-客户端的XML 流。所有
message/,presence/,以及iq/元素都被放在这些XML 流的上
下文中。下面就有一个例子:
SEND:?xml version=”1.0” encoding=”UTF-8” ?
SEND:stream:stream
SEND:to=’’
SEND:xmlns=’jabber:client’
SEND:xmlns:stream=’/streams’
RECV:stream:stream
RECV:xmlns:stream=’/streams’
RECV:id=’39ABA7D2’
RECV:xmlns=’jabber:client’
RECV:from=’’
(XML for user session goes here)*
SEND:/stream:stream
RECV:/stream:stream
*注意:必须等到当一个iq/元素(特别指一个’jabber:iq:auth’
名字空间下的query/元素)发送了认证信息后,服务器才会同意用
户会话进行工作。
3. message/元素
message/元素是Jabber 开放XML 协议三个顶级元素中的一个。
它被用来包含两个 Jabber 用户间互相发送消息内容,或者两个
Jabber IDs 之间更一般的消息(因为,通过神奇的传输器,另一个
IM 系统可以用Jabber ID 代替, )。
3.1. 消息类型-“type”属性
Jabber 支持几种不同的消息,这些消息通过message/的“type”
属性来进行区分。下面就是“type”属性的有效值:
3.1.1. [default] (不设置“type”属性)
表示本消息是一个普通消息。默认的情况下,客户端在没有设置
属性时,将消息类型定为普通消息。
例子:
message to=romeo@/orchard
bodyWherefore art though Romeo?/body
/message
3.1.2.type=”chat”
表示消息需要被一个接一个的显示在聊天界面上(一般是一条接
一条的界面,不过实际界面可以被用户自己定义。)
例子:
message to=romeo@/orchard type=chat
bodyWherefore art though Romeo?/body
/message
3.1.3.type=”error”
表示消息被描述成一个错误条件。实际的错误在消息中用一个
error/元素来描述。一个message/元素包括一个body/和一个
error/。下面的例子将演示,当Juliet 对一个不存在的用户发送
一个“hi”的消息时,将收到的包体:
例子:
message
to=juliet@
from=flomeo@
type=error
bodyhi/body
error code=404Not Found/error
/message
3.1.4. type
显示全部