Fifty Screens, One URL: How Real-Time Sync Actually Works
Behind the scenes of WebSocket dual-path architecture that keeps fifty screens in perfect lockstep with sub-50ms initial sync.
· Technical · 9 min read
The largest deployment I have personally witnessed involved 47 screens spread across three floors of a convention center. Confidence monitors in every breakout room, countdown displays in the hallways, a master clock in the main ballroom, agenda boards at each entrance, and a control surface on a tablet at the production desk. Every one of those screens showed the same timer state, updated within the same animation frame, from a single browser URL. In broadcast terms, this is the equivalent of a facility wide master sync generator, except it runs entirely in the cloud and costs nothing to deploy.
This is the scenario that breaks most web based timer tools. Not two screens. Not five. Forty seven, connected over a venue WiFi network that was simultaneously serving 2,000 attendees streaming, checking email, and downloading presentation files. Understanding why Timers Studio handles this scenario reliably requires understanding the dual path architecture beneath it.
The first path handles state data: timer configurations, theme settings, rundown metadata, speaker names, segment durations. Think of this as the "metadata bus" in a broadcast facility, carrying information that changes infrequently and tolerates moderate latency. It syncs through Supabase's real time subscription layer, which uses PostgreSQL's listen/notify mechanism to propagate changes. When you rename a timer or change a theme color, every connected screen receives that update within a few hundred milliseconds.
The second path handles transport controls: play, pause, stop, next, previous, rewind, and time adjustments. These are the commands your show caller fires from the cue list, and they need to arrive as fast as physically possible because they affect what the audience and speakers see in real time. Transport commands bypass the database entirely. They travel through a dedicated WebSocket broadcast channel that the server relays to all connected clients simultaneously. The server does not store these commands. It receives them and immediately fans them out. This is why transport latency stays under 10 milliseconds regardless of database load or the number of connected screens [Try the zero drift experience].
Initial sync is the other critical piece. When a new Player screen connects to a session, it needs the complete current state: which timer is active, how much time remains, what the display configuration looks like, whether a message is currently showing. Timers Studio delivers this full state snapshot in under 50 milliseconds, faster than a single frame of broadcast video. The server maintains a compressed representation of the current session state in memory, and when a new client connects, it sends this snapshot as the first WebSocket message before any incremental updates begin.
The practical importance of fast initial sync is easy to underestimate until you are in a production environment. Screens disconnect and reconnect throughout a show. A venue technician power cycles a display. Someone accidentally closes a browser tab and reopens it. A WiFi access point reboots. In all of these cases, the reconnecting screen needs to show the correct state immediately, not after a loading spinner, not after a five second polling interval. Under 50 milliseconds means the screen goes from blank to correct so fast that an observer cannot tell it was ever disconnected. You can test this right now [Launch your first studio].
Scaling to fifty concurrent screens introduces challenges that most WebSocket tutorials gloss over. The naive approach has the server send individual messages to each client, meaning fifty messages for every transport command. Timers Studio instead uses a broadcast pattern where the server writes the message once to a channel and the infrastructure handles fan out at the transport layer, much like a broadcast distribution amplifier splits one signal to many outputs without degrading any of them. The server's CPU cost does not increase meaningfully whether ten or fifty clients are connected.
There is also the question of reconnection storms. If a venue's WiFi drops for 30 seconds and then recovers, all fifty screens will attempt to reconnect simultaneously. The reconnection logic in Timers Studio uses exponential backoff with jitter, meaning each client waits a slightly different random interval before reconnecting. This spreads the load over several seconds instead of concentrating it in a single moment that could overwhelm the server.
Production teams often ask what happens if the internet connection fails entirely. The Player screens continue to display the last known state. A countdown that was running continues to count down locally because the Player maintains its own animation loop driven by the last received server timestamp, similar to how a broadcast confidence monitor holds its last frame during a signal interruption. When connectivity resumes, the Player resyncs automatically, correcting any accumulated drift without a visible jump [See it in action].
The architecture also handles heterogeneous network conditions gracefully. In a real venue, not every screen has the same network path. Some are on ethernet, some on 5GHz WiFi, some on 2.4GHz. The screens on faster connections receive updates a few milliseconds before the screens on slower connections, but the difference is imperceptible because the absolute latency for all paths remains well under the threshold of human perception.
For event producers evaluating whether a web based tool can handle their scale, the relevant question is not "how many screens can it support" in the abstract. The relevant question is whether the architecture was designed for concurrent real time delivery or whether it was designed for a single user and then scaled up with polling as an afterthought. You can test Timers Studio's multi screen behavior yourself by opening the Player URL in multiple browser tabs simultaneously [compare plans and features]. Each tab behaves exactly as a separate physical screen would, and the sync between them is immediate and consistent.
The convention center deployment I described at the beginning of this article ran flawlessly for three days. No resync was ever needed manually. No screen showed incorrect state. The production team forgot about the timer infrastructure entirely, which is exactly what infrastructure should aspire to be.