Force HTTP 1.1 to avoid websocket incompatibility#1364
Conversation
|
as per the comment, we certainly don't get much out of HTTP/2 in this case, so this makes sense as a workaround. for whatever this is worth, from websocket's perspective, RFC 6455's only mentions of HTTP 1.1 are accompanied by the phrase "at least" (or in examples, along with "non-normative"), so it's strange that something is throwing this back at us being that 2 > 1.1... but also, the reqwest method is but as long reqwest is implementing that with 1.1 (and it is), then this should suffice for our immediate purposes |
|
I wonder if we could run into this on web. We’ve had issues before, I think with image upload speed, that were due to the browser using HTTP/2. |
|
Here's what I found here:
|
Seems possible. I'm still not clear yet on what exactly changed that triggered this behavior change. It might be as simple as |
|
As part of oxidecomputer/omicron#9824, did some investigation here (thanks Claude). It looks like the root cause is seanmonstar/reqwest#2902 / seanmonstar/reqwest#2907, which turns on ALPN. TLS with ALPN is required for HTTP/2 protocol negotiation in reqwest (see There is RFC 8441 which allows WebSockets upgrades to occur with HTTP/2, but that isn't implemented in reqwest. For our internal APIs, the options are:
Out of these, for our internal APIs, 4 is the most appealing to me. Maybe 2 as a second choice. |
|
Agreed: 4 until slightly too late and then 2. |
|
@sunshowers does that analysis explain why @ahl couldn't reproduce locally? |
We think it may be because I was not using SSL locally |
See #1352. I don't want to claim that it fixes the issue, because I don't fully understand it yet; but in all likelihood this will suffice.