Gzip frames, when the client asks
Bandwidth discipline on the WS — opt-in Binary frames for clients that say so.

Bandwidth on a realtime WS is not free, especially for a mobile client watching a dense tile. World Monitor ships gzip Binary frames — but only when the client asks for them. The opt-in is the discipline.
Bandwidth on a realtime WS is not free, especially for a mobile client watching a dense tile. World Monitor ships gzip Binary frames — but only when the client asks for them. The opt-in is the discipline.
Opt-in, not default
A client that sends gzip:true in its viewport message receives Binary frames with a gzipped payload. A client that does not, receives JSON Text frames. The default is JSON, because the default should work for every client, including a debug curl in a terminal. Gzip is an opt-in for clients that know they want it — a mobile app on a metered connection, a dashboard over a slow link. The server does not decide for the client; the client declares, and the server frames accordingly.

Why Binary frames
WS frames have an opcode: Text or Binary. A gzipped payload is not valid UTF-8, so it must ride in a Binary frame. A client that asked for gzip knows to gunzip the Binary payload; a client that did not expects Text and would choke on gunzipping raw JSON. The opt-in is not a preference; it is a contract — the frame type changes, and both sides have to agree. That is why it cannot be a server-side decision: the server cannot force gzip on a client that is parsing Text frames.
The server does not decide for the client. The client declares gzip:true, and the server frames Binary. The opt-in is not a preference; it is a contract.
What it saves
GeoSignal deltas are JSON, and JSON is verbose — coordinates, ids, metadata, repeated per message. Gzip compresses that redundancy hard. We project roughly a 4-8x bandwidth reduction for typical GeoSignal deltas. That number is PROJECTED, not measured; it will be labeled measured only once it is measured per workload. The mechanism — opt-in Binary gzip frames — is real and shipped. The savings depend on the payload shape, and the honest version is that we will publish the number when we have it.
- Opt-in: the client sends gzip:true, the server frames Binary with a gzipped payload.
- Default is Text JSON — the wire works for every client, including a debug curl.
- Bandwidth savings are PROJECTED (~4-8x on typical deltas), not yet measured per workload.
Why the discipline matters
The temptation is to gzip everything by default and let the client handle it. That breaks the client that did not expect it. The discipline of opt-in is the discipline of not surprising the client: the wire format is a contract, and changing it without asking is a protocol break. Gzip when asked is a feature; gzip by default is a breaking change disguised as an optimization.
Gzip when asked is a feature; gzip by default is a breaking change disguised as an optimization. The opt-in is what keeps the wire honest.
— atlas WS framing note
What it is not
This is not a claim about latency. Gzip adds a compress step on the server and a decompress step on the client; for small deltas the compression cost can exceed the bandwidth saved. The win is bandwidth, not latency, and the client that asks for gzip is the client for whom bandwidth is the constraint, not CPU. We are pre-revenue and building the POC; the gzip path is built, and the decision to use it belongs to the client, not to us.