docs(transport): one-plaintext-port gRPC+HTTP/1.1 limit + sidecar guidance#50
Merged
Conversation
…+ sidecar guidance A single plaintext port cannot serve both native gRPC (HTTP/2/h2c) and HTTP/1.1 — per-connection protocol selection needs ALPN, which is TLS-only; Node core declined cleartext allowHTTP1 (#26795, #44887). Document the limitation, the runtime matrix (native gRPC is a Node story — Bun/Deno/Workers fetch Responses have no HTTP/2 trailers, so they serve Connect/gRPC-Web only), and the recommended fix: a sidecar/edge proxy (Envoy/Caddy) for a mixed gRPC + HTTP/1.1 edge, or TLS+ALPN. Resolves the design question in connectum#169 (won't build a Node-only byte-sniffing mux that doesn't help Bun — the primary dev runtime). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MdeH7fExPmiRHRirGuvGk3
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.
Documents the transport limitation researched for framework issue Connectum-Framework/connectum#169 and the recommended resolution, instead of building a Node-only byte-sniffing multiplexer.
Why not implement the mux
A combined cleartext h2c + HTTP/1.1 listener can only be done in Node via a userland byte-sniffing multiplexer (no ALPN without TLS). But that is Node-specific and does not help Bun (the team's primary dev runtime) — Bun/Deno/Cloudflare Workers
serve()cannot serve native gRPC at all (fetch-styleResponsehas no HTTP/2 trailers). Building a Node-only mechanism irrelevant on the main runtime isn't worthwhile.What this PR adds (to
transport-matrix.md)Upgrade: h2cis RFC-9113-deprecated.🤖 Generated with Claude Code
https://claude.ai/code/session_01MdeH7fExPmiRHRirGuvGk3