HTTP BOSH和HTTP流水线

时间:2012-08-02 18:01:46

标签: java http web xmpp

我对HTTP BOSH和HTTP Pipelining感到困惑。

BOSH规范:http://xmpp.org/extensions/xep-0124.html

  

如果客户端需要向连接管理器发送一些数据   它只是发送包含数据的第二个请求。的不幸的是   大多数受限客户端不支持HTTP流水线(并发   通过单个连接请求),因此客户端通常需要   通过第二个HTTP连接发送数据。

在本规范中有很多关于HTTP流水线的信息,但来自 http://en.wikipedia.org/wiki/HTTP_pipelining

  

POST之类的非幂等方法不应该是流水线的。

在BOSH规范中:

  

所有信息都在标准HTTP POST请求的主体中进行编码   和回应。每个HTTP主体都包含一个包装器   封装正在传输的XML元素(请参阅Wrapper   元素)。

那么HTTP流水线如何与HTTP BOSH一起使用?

1 个答案:

答案 0 :(得分:6)

HTTP RFC

  

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

“不应该”在这种情况下具有RFC 2119给出的含义,即

  

这个短语或短语“Not WOMMENDED”意味着在特定情况下可能存在有效理由,当特定行为可接受或甚至有用时,但应理解全部含义,并在实施任何行为之前仔细权衡案例用这个标签

这意味着,一般情况下,建议不要将HTTP流水线与POST请求结合使用(这符合POST BOSH概念;但是,HTTP协议实际上并不禁止它。如果它实际上禁止行为,RFC 2616将使用“绝不”的语言。 BOSH规范的作者作出判断,对于POST,对流水线{{1}}请求没有任何负面影响。