gw-05 — References

The primary sources (named in the JD)

Protocol

  • RFC 6455 — The WebSocket Protocol. Read §1.3 (handshake), §5 (framing + masking), §5.5 (control frames: close/ping/pong).
  • RFC 8441 — Bootstrapping WebSockets with HTTP/2 (CONNECT + :protocol). The h2 path for WebSockets.
  • WebTransport (over HTTP/3) — the QUIC-based future (gw-02): survives network changes via connection migration. https://www.w3.org/TR/webtransport/
  • Server-Sent Events (WHATWG HTML EventSource) — the simpler server→client-only alternative.

Implementations

  • nhooyr.io/websocket and github.com/gorilla/websocket (Go) — the two common Go WebSocket libraries used in the steps.
  • Netty WebSocketServerProtocolHandler — the Java/Netty path (the Pushy lineage).
  • k6 (with the websockets module) or Gatling — load generators that can open many concurrent WebSocket connections.

Scaling & ops

  • The C10M problem / "millions of connections per box" writeups (WhatsApp's 2M-connections-per-server post is the classic).
  • Linux tuning for many connections: fs.file-max, ulimit -n, net.ipv4.ip_local_port_range, net.core.somaxconn, ephemeral-port and conntrack budgets (gw-01).
  • Marc Brooker — Exponential Backoff And Jitter (the reconnect-storm fix). https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/

Cross-lab dependencies

  • Upstream: gw-01 (drain/keepalive), gw-02 (upgrade path), gw-03 (event-loop discipline), db-20 (the registry is a distributed KV).
  • Downstream: gw-06 (reconnect backoff/jitter, load shed), gw-09 (readiness + termination grace for drain), gw-11 (delivery-reliability SLOs).