最近Jabber Server team的开发人员一直在讨论XEP 0198的东西,这个东西个人感觉还是比较有用的,特别是关于resume的部分,因为对于mobile client来说,网络掉线的概率还是比较大,目前对于掉线重连的case,很多人都觉得重连这一块太花时间了。如果server支持stream resume了,我想重连这一块会快很多。
下面是我学习0198这个XEP的一些成果:
1. 如果Server支持stream management, 在stream:features会包含下面的东西
<stream:features>
<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'>
<required/>
</bind>
<sm xmlns='urn:xmpp:sm:3'>
<optional/>
</sm>
</stream:features>
2. Enable stream mangement比较简单,如下:
<enable xmlns='urn:xmpp:sm:3'/>
3. Acks, 这部分的内容相对来说比较复杂, client/server端应该包含两个东西, 一个是发送队列(h值和发送的内容的对应关系), 接收到的对方处理的h值; 接收到的最新的h值。对于client来说,比较关心的就是收到的h值,当connection断掉重连的时候,client可以给Server发送这个h值,然后Server可以把后续client没有处理的stanzas重新发送一遍。
4. resume过程