On Mon, Oct 16, 2017 at 12:44 AM, Andy Green <andy@warmcat.com> wrote:
>
> You can probably pipeline the CONNECT + ws handshake though, Patrick shows
> them sequentially and I didn't think about it myself.
>
>
right. The example is just for clarity and cannot show all expressions of
h2 flows.
CONNECT + DATA before the response headers is pretty much the h2 analog of
TCP Fast Open. The devil is in the details.. That's a general CONNECT +
DATA issue not limited to the protocol upgrade described here so I don't
think its worth discussion in a websockets rfc.
I think the path to success here hinges on a very tight scoping of work and
therefore optimizing handshake latency is a non-goal of this effort.
> Still only two round trips.
>>
>
> - SETTINGS - SETTINGS
> - GET /index.html
> - 200 HEADERS + DATA
>
> - :method CONNECT
> - DATA ws handshake
> - 200 HEADERS
> - DATA ws handshake final
> - DATA...
>
> - DATA ... - DATA...
>
> With the part of the pipelining that is legal for ws, two round trips
> before the client can start to send data and 1.5 before the server can send
> data... if it's true then you're right it's not so bad.
>
> Were you concerned that the client needs to learn that the server
>> supports websockets and not just :protocol?
>>
>
> No I just followed Patrick's sequencing; he shows them serialized. But
> you're right at least the CONNECT + ws handshake can probably be pipelined.
>
> That's also going to be a variation from normal h2 HEADERS flow if I
> understood it, on one stream there will be END_HEADERs coming twice (for
> the CONNECT and the ws handshake separately)
>
> Anyway you are right, it makes any difference with PUSH_PROMISE probably
> not worth the effort.
>
> -Andy
>