> Then you can see the client has used http piping (pretty dumb
> considering the browser should know this connection is occupied)
> to send requests for /21.png /22.png /23.png ( the hanging resources)
> [...]
Exactly. The fact the client is requesting static resource on a pipelined
HTTP connection with a delayed chunked response is a very bad idea.
> I am by no means an expert analysing tcpdumps or how http pipelining
> is supposed to work but it looks to me that without haproxy in the
> middle node has managed to identify there are requests stuck in a http
> pipeline and reset the connection to allow the browser to continue.
Yes, I agree with that analysis. But all those things are just bandaid
and only required because HTTP is so incredible misused here.
> Is there anyway to achieve the same with haproxy?
Not directly. However, if you are able to disable keep-alive for /events,
then the client will have to open new connections for the DOM elements
and this should fix the issue, theoretically.
Try (please ignore the tunnel test from my previous mail):
frontend external
bind :80
acl DYN path_beg /events
use_backend backend_httpclose if DYN
default_backend test
backend test
server test localhost:3000
backend backend_httpclose
option httpclose
server test localhost:3000
Regards,
Lukas