ui: websocket watchers and http2 - #28364
Merged
Merged
Conversation
chrisroberts
force-pushed
the
f-pennnnnnnding-requests
branch
from
August 4, 2026 16:27
9069abd to
206e41a
Compare
chrisroberts
force-pushed
the
f-pennnnnnnding-requests
branch
from
August 5, 2026 23:01
76d2d9e to
d267e86
Compare
chrisroberts
force-pushed
the
f-pennnnnnnding-requests
branch
from
August 6, 2026 15:19
d267e86 to
8afc622
Compare
chrisroberts
force-pushed
the
f-pennnnnnnding-requests
branch
from
August 6, 2026 15:37
8afc622 to
122d36e
Compare
chrisroberts
commented
Aug 6, 2026
chrisroberts
force-pushed
the
f-pennnnnnnding-requests
branch
from
August 7, 2026 14:43
122d36e to
9116035
Compare
chrisroberts
force-pushed
the
f-pennnnnnnding-requests
branch
from
August 7, 2026 17:55
9116035 to
08ea0ad
Compare
chrisroberts
force-pushed
the
f-pennnnnnnding-requests
branch
from
September 1, 2026 15:49
08ea0ad to
899a211
Compare
chrisroberts
force-pushed
the
f-pennnnnnnding-requests
branch
from
September 1, 2026 15:55
899a211 to
807e2ce
Compare
chrisroberts
force-pushed
the
f-pennnnnnnding-requests
branch
from
September 1, 2026 16:29
807e2ce to
92303fd
Compare
chrisroberts
marked this pull request as ready for review
September 1, 2026 16:48
tgross
approved these changes
Sep 2, 2026
tgross
left a comment
Member
There was a problem hiding this comment.
LGTM! Nice work on figuring out this mess of complexity ![]()
15 tasks
8 tasks
schmichael
pushed a commit
to vercel/nomad
that referenced
this pull request
Sep 25, 2026
Enables API support for HTTP/2 protocol and using WebSockets for watchers in the UI.
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
The HTTP API currently only supports HTTP/1 and this leads to issues within the UI, especially on chromium based browsers, where the maximum number of HTTP/1 connections is limited. The UI makes use of watchers, which are blocking requests that wait for a change to occur and update the UI. In some places the number of watchers combined with other requests will exceed the limit and result in the UI becoming unresponsive until a transition is made or the page is reloaded.
To remove the connection limit restriction, the UI watchers have been updated to use WebSockets for the blocking requests. The use of WebSockets for watchers happens at request time, so there is no need for refactoring or updating the existing UI implementations. This also allows the use of WebSockets for watchers to be enabled or disabled with a configuration flag (or dynamically based on condition).
Unfortunately, websockets are not available for FIPS builds due to WebSocket's reliance on SHA1 for the handshake and SHA1 not being available within go when FIPS is enabled. To rectify the original issue of the UI becoming unresponsive when WebSockets are not available, enabling HTTP/2 fixes the issue. Note that the UI still uses WebSockets for terminal emulation, and that will be unavailable on FIPS builds.
Ultimately this changeset fixes the issue of the UI becoming unresponsive in two ways and which fix is used is dependent on the Nomad configuration.
WebSockets are used if:
HTTP/2 is used if:
Testing & Reproduction steps
Links
Contributor Checklist
changelog entry using the
make clcommand.ensure regressions will be caught.
and job configuration, please update the Nomad product documentation, which is stored in the
web-unified-docsrepo. Refer to theweb-unified-docscontributor guide for docs guidelines.Please also consider whether the change requires notes within the upgrade
guide. If you would like help with the docs, tag the
nomad-docsteam in this PR.and followed the AI usage guide.
Reviewer Checklist
backporting document.
in the majority of situations. The main exceptions are long-lived feature branches or merges where
history should be preserved.
within the public repository.
Changes to Security Controls
Are there any changes to security controls (access controls, encryption, logging) in this pull request? If so, explain.