HTTP BOSH和HTTP流水线
问题描述:
我对HTTP BOSH和HTTP流水线感到困惑。HTTP BOSH和HTTP流水线
BOSH规格:http://xmpp.org/extensions/xep-0124.html
如果客户需要一些数据发送给连接管理器然后 它简单地发送包含数据的第二请求。 不幸的是 大多数受限制的客户端不支持HTTP管道传输(并发的 请求通过单个连接),所以客户端通常需要通过第二个HTTP连接发送数据 。
而在这个规范是关于HTTP管道很多信息,但是从 http://en.wikipedia.org/wiki/HTTP_pipelining
非幂等方法,如POST不应流水线。
而且在BOSH规格:
的所有信息都是标准的HTTP POST体编码的请求 和响应。每个HTTP正文包含一个封装器,封装正在传输的XML元素(请参阅封装器 元素)。
那么如何才能使用HTTP流水线与HTTP BOSH?
答
的HTTP RFC说
客户不应使用非幂等方法或方法非幂等序列(参见9.1.2节)管道请求。
“不应该”在这方面的含义由RFC 2119,即给定的,
这句话,还是那句话“不推荐”意味着有可能存在在特定情况下有效的原因时,特定的行为是可以接受的,甚至是有用的,但全部含义应理解和实施的情况下用这个标记描述的任何行为
这意思是说,在一般情况下,它是不能重新之前仔细权衡推荐使用HTTP流水线和POST
请求(这与RFC 2616's的概念POST
一致);但是,HTTP协议实际上并不禁止它。如果它实际上禁止这种行为,则RFC 2616将使用“MUST NOT”语言。 BOSH
规范的作者作出了判断,在BOSH
的情况下,对流水线POST
请求没有不利影响。