Skip to content

Improve UX for HTTP/1.1 connections when 6+ tabs are open #16518

Closed
2 of 2 issues completed
Closed
@bpmct

Description

@bpmct

It looks like HTTP1.1 connections only allow 2-6 connections per host. If the server/reverse proxy is upgraded to HTTP/2, this is fixed.

For users, this leads to a very confusing experience. Coder seems, slow, sluggish, and unresponsive. See Slack and search for issues

For admins, we surface an error, but hidden in the workspace proxies page. I don't think we also explain the reason why we recommend moving off HTTP1. See #15917

Let's give users and admins a better experience. These suggestions are designed not to be prescriptive, as I don't understand the cost/complexity but are in prioritized from best, to worst, admin/user experience. All are a substantial improvement to the status quo.

  1. Do not keep a constant websocket SSE connection open per tab. Find a way to support unlimited tabs on HTTP1.1: We should look at how other dynamic web apps support having 6 tabs open on HTTP1. I'm sure there are open source examples that still allow page updates in realtime, without maintaining a websocket per tab
  2. Partial support in the tab 6+n: Tab 7 should not have a blocking/unclear behavior but perhaps not have the same level of updates. The user should be aware of the degraded behavior via a banner.
  3. Fully deprecate support for HTTP1.1. Show a giant banner for admins and users: Because this makes the experience borderline unusable and we do not surface why there is an error for users/admins except in one page, we should make it explicit that Coder server only supports HTTP2. If we do this, we should confirm other products do this and are still successfully deployed in global enterprises.

3 major customers have reported this, and it is causing a lot of user and admin confusion. I am open to other ideas on how we solve it, but the status quo needs improvement

Sub-issues

Metadata

Metadata

Assignees

Labels

customer-reportedBugs reported by enterprise customers. Only humans may set this.must-doIssues that must be completed by the end of the Sprint. Or else. Only humans may set this.

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions