Closed rakoo closed 11 years ago
The prerequisites of pipelining are in place. You will notice Reel::Connection tracks request and response state separately.
Regarding it "wrongly advertise being HTTP/1.1 compatible", all I have to say is: pfffffffffffffffftttttt. Pipelining was designed incredibly poorly and has conflicting semantics with many other features. What do you do when you get an Upgrade request in the middle of writing out other pipelined responses?
I almost consider pipelining a misfeature. I kind of want to support it, but probably not enough to do the work.
SPDY provides a much cleaner solution.
Tony Arcieri
On May 4, 2013, at 1:31 PM, Matthieu Rakotojaona notifications@github.com wrote:
Reel is great, but wrongly advertise being HTTP/1.1 compatible: one of the most important features, pipelining, is impossible.
When pipelining requests, they are all stacked on the socket. A call to Request.read(connection)https://github.com/celluloid/reel/blob/816caf619b8217cdf23673eaf5d3e4b8809d4d32/lib/reel/request.rb#L15will read all of them, feed them to the parser which will correctly detect mutiple requests, but we only see one request from the outside (the last one, in fact)
— Reply to this email directly or view it on GitHubhttps://github.com/celluloid/reel/issues/55 .
Indeed, Requests and Responses are nicely separated, it was a joy to use this for #56.
I'm sorry if I've offended you in any wai, this was absolutely not the goal. I don't have much knowledge in the HTTP world, so I didn't know pipelining could be so problematic; I just figured that it's so much useful for reducing network activity that it's worth using it, especially since it's supposed to be available if we say HTTP/1.1.
Fixed in #73
Reel is great, but wrongly advertise being HTTP/1.1 compatible: one of the most important features, pipelining, is impossible.
When pipelining requests, they are all stacked on the socket. A call to Request.read(connection) will read all of them, feed them to the parser which will correctly detect mutiple requests, but we only see one request from the outside (the last one, in fact)