2012-08-02 94 views
2

我对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?

回答

6

HTTP RFC

客户不应使用非幂等方法或方法非幂等序列(参见9.1.2节)管道请求。

“不应该”在这方面的含义由RFC 2119,即给定的,

这句话,还是那句话“不推荐”意味着有可能存在在特定情况下有效的原因时,特定的行为是可以接受的,甚至是有用的,但全部含义应理解和实施的情况下用这个标记描述的任何行为

这意思是说,在一般情况下,它是不能重新之前仔细权衡推荐使用HTTP流水线和POST请求(这与RFC 2616's的概念POST一致);但是,HTTP协议实际上并不禁止它。如果它实际上禁止这种行为,则RFC 2616将使用“MUST NOT”语言。 BOSH规范的作者作出了判断,在BOSH的情况下,对流水线POST请求没有不利影响。