加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Jabberd/XMPP 学习之七:xml流和xml节

发布时间:2020-12-15 23:00:28 所属栏目:百科 来源:网络整理
导读:XML流的定义: XML流是一个容器,用于任何两个实体通过网络进行XML元素的交换. XML流的开始明确表达为一个打开的 "流头" (即,一个包含了适当树形和命名空间声明的 XML stream 标签),而这个XML流的结尾明确表达为一个关闭的XML /stream 标签. 在流的生存期间,
XML流的定义:
XML流是一个容器,用于任何两个实体通过网络进行XML元素的交换. XML流的开始明确表达为一个打开的 "流头" (即,一个包含了适当树形和命名空间声明的 XML <stream> 标签),而这个XML流的结尾明确表达为一个关闭的XML </stream> 标签. 在流的生存期间,发起方实体可以通过这个流发送不限数量的XML元素,这些元素或用来协商这个流 (例如,完成TLS协商或SASL协商) 或用于 XML节. "发起流" 是从发起方实体 (通常是一个客户端或服务器) 到接收方实体 (通常是一个服务器),也可视为对应发起方 "连接到" 或 "和......开启会话" 接收方实体. 发起流允许从发起方实体到接收方实体的单向通讯; 为了让接收方实体能够向发起方实体发送节,接收方实体必须(MUST) 协商一个相反的流 ("应答流").
XML节的定义:

XML节是一个XMPP中的基本语义单位. 一个节就是一个第一层元素 (在流的深度=1),它的元素名是 "message","presence",或 "iq" ,而它的合格命名空间是 'jabber:client' 或 'jabber:server'. 相比之下,任何其他命名空间限定的第一层元素都不是一个XML节 (stream errors,stream features,TLS相关的元素,SASL相关的元素,等等.),由'jabber:client' 或 'jabber:server' 命名空间限定的 <message/>,<presence/>,或 <iq/> 元素但不在第一层 (例如,包含在一个扩展元素中的 <message/> 元素 ( 做报告用的8.4)也不是一个XML节,不是命名空间 'jabber:client' 或 'jabber:server'限定的 <message/>,或 <iq/> 元素也不是一个XML节. 一个XML节典型的包含一个或多个必要的子元素 (以及相关的属性,元素,和 XML 字符串数据) 来传达所需的信息,子元素可以(MAY)使用任何XML命名空间.

有三种节: message,presence,和 IQ ("Info/Query"的缩写). 这些节类型提供三种不同的通讯原语: 一个 "推送" 机制用于已生成的消息,一个特定的 "发行-订阅" 机制用于广播网络可用性信息,和一个 "请求-应答" 机制用于更结构化的数据交换。

打开流

连接到接收方实体的适当的IP地址和端口之后,发起方实体通过发送一个流头 ("发起流头") 来打开到接收方实体的流.

I: <?xml version='1.0'?>
   <stream:stream
       from='juliet@im.example.com'
       to='im.example.com'
       '1.0'
       xml:lang='en'
       xmlns='jabber:client'
       xmlns:stream='http://etherx.jabber.org/streams'>

然后接收方实体通过发送一个它自己的流头 ("应答流头") 来回复发起方实体.

R: <?xml id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' 'http://etherx.jabber.org/streams'>

接着实体们就可以再进行流协商过程的剩余步骤了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读