首页 > 代码库 > XMPP协议介绍

XMPP协议介绍

 一、xmpp协议工作原理

 

 

二、XMPP地址模式

 

三、xmpp消息格式

xmpp xml包括三个元素,message,presence,iq,也翻译做三种

 

在‘jabber:client‘和‘jabber:server‘名字空间中定义了三种 XML 节: <message/>, <presence/>, 和 <iq/>. 另外, 这三种节有五种通用的属性.

通用属性:

(1)to:‘to‘ 属性表示节的预期接收者的 JID. 

(2)from:‘from‘ 属性表示发送者的 JID .

(3)id:可选的‘id‘ 属性可以(MAY)用于为节的内部跟踪发送实体,从 IQ 节 语义来讲,就是通过发送和接收这些节来跟踪“请求-应答”型的交互行为。这个可选的(OPTIONAL)‘id‘属性值在一个域或一个流中是全局唯一的。

(4)type:‘type‘ 属性指明message、presence或 IQ的意图或上下文的详细信息。三种节的通用‘type‘值是"error",其它值很不一样。

(5)xml:lang:指明缺省语言

 

1、presence

<presence/> 元素可以被看作一个基本的广播或“出版-订阅”机制,用于多个实体接收某个已订阅的实体的信息(在这里,是网络可用性信息).

2、message

<message/>节类型可以被看作是一个"push"机制用于一个实体推送信息给另一个实体,类似发生在 email 系统中的通信.

3、iq

信息/查询(Info/Query),或曰 IQ,是一个 请求-回应 机制,某些情况下类似[HTTP].

IQ 语义学使一个实体能够向另一个实体做出请求并做出应答.

请求和应答所包含的数据定义在 IQ 元素的一个直接的子元素的名字空间声明中, 并且由请求实体用‘id‘属性来跟踪这一交互行为.

因而,IQ 交互伴随着一个结构化的数据交换的通用模式例如 get/result 或 set/result。

 

四、XML流

两个基本概念,XML 流和 XML 节。

XML 流的定义:一个 XML 流是一个容器,包含了两个实体之间通过网络交换的 XML 元素。一个 XML 流是由一个 XML 打开标签 <stream> (包含适当的属性和名字空间声明)开始的,流的结尾则是一个 XML 关闭 L 标签 </stream> 。

在流的整个生命周期,初始化它的实体可以通过流发送大量的 XML 元素,用于流的握手(例如 TLS 握手 或 SASL 握手) 或 XML 节(在这里指符合缺省名字空间的元素,包括<message/>,<presence/>, 或 <iq/> 元素)。

XML 节仅限于<message/>, <presence/>, 和 <iq/> 元素。

流错误:流的根元素可以(MAY)包含一个 <error/> 子元素。