我对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一起使用?
答案 0 :(得分:6)
客户端不应使用非幂等方法或非幂等方法序列来管道请求(参见第9.1.2节)。
“不应该”在这种情况下具有RFC 2119给出的含义,即
这个短语或短语“Not WOMMENDED”意味着在特定情况下可能存在有效理由,当特定行为可接受或甚至有用时,但应理解全部含义,并在实施任何行为之前仔细权衡案例用这个标签
这意味着,一般情况下,建议不要将HTTP流水线与POST
请求结合使用(这符合POST
BOSH
概念;但是,HTTP协议实际上并不禁止它。如果它实际上禁止行为,RFC 2616将使用“绝不”的语言。 BOSH
规范的作者作出判断,对于POST
,对流水线{{1}}请求没有任何负面影响。