码迷,mamicode.com
首页 > 其他好文 > 详细

XEP-0198 流管理(Stream Management)中文翻译

时间:2014-07-26 02:33:16      阅读:513      评论:0      收藏:0      [点我收藏+]

标签:xmpp   0198   中文翻译   

RFC 6120中文链接地址:点击打开链接

参考:点击打开链接

1.介绍
       XMPP Core 用XMPP定义了流的XML技术(也就是流的建立和终止,包括认证和加密)。但是核心的XMPP协议并没有为管理一个灵活的XML流提供工具。
       Stream Management背后的基本概念是,初始化的实体(一个服务端或者客户端)和接收的实体(一个服务端)可以为更灵活的管理stream交换“命令”。下面两条 Stream Management的特性被广泛的关注,因为它们可以提高网络的可靠性和终端用户的体验:
     *Stanza确认(Stanza Acknowledgements) ——  能够确认一段或者一系列Stanza是否已被好友接收。
     *流恢复(Stream Resumption) ——  能够迅速的恢复(resume)一个已经被终止的流。
    Stream management 用较的短XML元素实现了这些特性,这些XML元素是在流的标准上的。这些元素并不是XMPP意义上的“stanzas”(也就是说,不是<iq/>, <message/>, or <presence/>这样的stanzas,stanzas在RFC 6120中有定义),它们不会在Stream management中被counted或者被acked,因为它们是为管理stanzas本身而存在的。
      Stream management是在XML流的标准上使用的。检查一个给定的流TCP的连通性的时候,特别推荐使用whitespace keepalives(见RFC 6120)、XMPP Ping (XEP-0199) 或者TCP keepalives。对比Stream management,高级消息处理Advanced Message Processing (XEP-0079)和消息回执Message Delivery Receipts (XEP-0184),定义了ack,它可以通过多个流实现端对端的传输;这些特性在一些特殊情况中是有用的,但是没必要去检查在两个xmpp实体之间直接传递的流。
注:Stream management可以用于服务端到服务端、客户端到服务端的流。但是,为了方便,本规范只讨论客户端到服务端的流。同样的原则也适用于服务器到服务器的流。(在本文档中,以“C:”开头的都是由客户端发送的,由“S:“开头的都是由服务器发送的)。
2. 流特性(Stream Feature)
服务端返回一个流的header连同流的features给客户端,这些features包括一个<sm/>元素“urn:xmpp:sm:3”的命名空间namespace(见Namespace Versioning 关于版本号增加的可能性)。
注:客户端不能negotiate(谈判,商议;转让;越过) stream management,除非客户端已经身份验证并且绑定了一个资源;见下面的特定的限制条件。
例1:服务器发送新的流的header和流的features。
S: <stream:stream
       from='example.com'
       xmlns='jabber:client'
       xmlns:stream='http://etherx.jabber.org/streams'
       version='1.0'>

S: <stream:features>
     <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/>
     <sm xmlns='urn:xmpp:sm:3'/>
   </stream:features>
3. 启动Stream Management
    要启动使用Stream Management,客户端发送一个<enable/> 命令给服务端。
例2:客户端启动Stream Management
C: <enable xmlns='urn:xmpp:sm:3’/>
    如果客户端想被允许恢复流,必须包括一个boolean类型的“resume”属性,默认为false。恢复先前的一个会话(section),请参阅本文档的恢复部分。
    <enable/>元素可以包含一个“max”属性,用来指定客户端最优的最大恢复时间,以秒为单位。
    一旦受到启动请求,服务端必须回复一个<enabled/>元素,或者一个<failed/>,注明 ‘urn:xmpp:sm:3‘ 的命名空间namespace。<failed/>元素表示在建立stream management 会话(session)中存在一个问题。<enabled/>元素表示成功的建立了stream management 会话。
例3:服务端启动stream management
S: <enabled xmlns='urn:xmpp:sm:3’/>
    然后可以使用stream management的特性定义下面的内容。
    如果服务端允许会话恢复,服务端必须包括一个resume属性,值为”ture“或者”1“。
例4:服务端启动允许会话恢复的stream management
S: <enabled xmlns='urn:xmpp:sm:3' id='some-long-sm-id' resume='true’/>
      <enabled/>元素可以包含一个”max“属性,用来指定服务端特定的最大恢复时间。
      <enabled/>属性可以包含一个”location“属性,用来指定服务端的IP地址或者域名(端口可选)重新连接,见RFC6120的4.9.3.19部分(即,"domainpart:port", IPv6地址在方括号里[…],见RFC5952)。如果重连那个location失败了,标准的XMPP重连算法在RFC6120中有详细说明。
      客户端不能尝试negotiate stream management,除非通过了身份验证;也就是说客户端不能发送一个<enabled/>元素直到完成了身份验证。(例如,SASL,Non-SASL Authentication (XEP-0078)或者 Server Dialback (XEP-0220)已经成功完成)。
例5:如果客户端试图在未绑定资源前启动stream management,服务端返回错误
S: <failed xmlns='urn:xmpp:sm:3'>
     <unexpected-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>

   </failed>


未完待续。。。

XEP-0198 流管理(Stream Management)中文翻译,布布扣,bubuko.com

XEP-0198 流管理(Stream Management)中文翻译

标签:xmpp   0198   中文翻译   

原文地址:http://blog.csdn.net/yuedong56/article/details/38120101

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!