Jabberd/XMPP 学习之七:xml流和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'>
接着实体们就可以再进行流协商过程的剩余步骤了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |