Why architecture matters here

Subprotocol failures come from missing versioning + interop breakage. Architecture matters because negotiation + framing + versioning compose.

Advertisement

The architecture: every piece explained

The top strip is negotiation. Client offers. Server picks. Framing layer. Versioning.

The middle row is lifecycle. Interop tests. Fallback. Documentation. Deprecation window.

The lower rows are ops. Client libraries. Metrics. Ops — governance + audit + tests.

WebSocket subprotocols — negotiation + framing + versioning + interopapp-level protocol on top of WSClient offerslist in Sec-WebSocket-ProtocolServer picksone from listFraming layerJSON / MsgPack / customVersioningsemver in nameInterop testsclients + serversFallbackif none matchesDocumentationspec publicDeprecation windowkeep old aliveClient librariesofficial + communityMetricsprotocol negotiation successOps — governance + audit + teststestrejectspecdeprecateprovidemeasuremeasureoperateoperate
WebSocket subprotocol negotiation + framing.
Advertisement

End-to-end flow

End-to-end: client offers ['chat.v3', 'chat.v2']. Server picks v3. Framing per v3 spec. Old clients using v2 still supported until deprecation window closes. Interop tests run per CI.