TIMERS STUDIO
MASTER YOUR FLOW

50个屏幕,一个URL:实时同步的工作原理

WebSocket双路径架构如何让50个屏幕保持完美同步,初始同步低于50毫秒的技术内幕。

· 技术解析 · 9 min read

我个人见证过的最大规模部署涉及分布在一个会展中心三个楼层的47个屏幕。每个分会场都有信心监视器,走廊里有倒计时显示屏,主宴会厅有主控室的主时钟,每个入口有议程展示板,制作台上的平板电脑作为控制面。每一个屏幕都显示相同的计时器状态,在同一个动画帧内更新,来自单一的浏览器URL。 这是大多数网页端计时器工具会崩溃的场景。不是2个屏幕,不是5个,而是47个,连接在一个同时服务2000名参会者的场馆WiFi网络上,这些参会者在同时进行视频流、查看邮件和下载演示文件。要理解Timers Studio为何能可靠地处理这一场景,需要理解其底层架构。 系统使用双路径方法进行数据同步。第一条路径处理状态数据:计时器配置、主题设置、运行表元数据、演讲者姓名、段时长。这些数据变化不频繁,可以容忍适度的延迟。它通过Supabase的实时订阅层同步,该层使用PostgreSQL的listen/notify机制向已连接的客户端传播更改。当你重命名计时器或更改主题颜色时,所有已连接的屏幕在几百毫秒内接收到更新。对于状态数据来说,这个速度绰绰有余。 第二条路径处理传输命令:播放、暂停、停止、下一个、上一个、倒回和时间调整。这些命令需要尽可能快地到达,因为它们影响着观众和演讲者实时看到的内容。传输命令完全绕过数据库,通过专用的WebSocket广播通道传输,服务器同时向所有已连接的客户端中继。服务器不存储这些命令,收到后立即扇出。这就是为什么传输延迟无论数据库负载、状态通道上的网络拥塞或已连接屏幕的数量如何,都保持在10毫秒以下。 初始同步是另一个关键环节。当新的Player屏幕连接到会话时,它不能简单地开始接收增量更新。它需要完整的当前状态:哪个计时器活跃、剩余多少时间、显示配置是什么样的、当前是否有消息显示。Timers Studio在低于50毫秒内交付这个完整的状态快照。服务器在内存中维护当前会话状态的压缩表示,当新客户端连接时,在任何增量更新开始之前,它将此快照作为第一条WebSocket消息发送。 快速初始同步的实际重要性在你身处制作环境之前很容易被低估。屏幕在演出期间会不断断开和重新连接。场馆技术人员会重启显示器以修复分辨率问题。有人不小心关闭了浏览器标签然后重新打开。WiFi接入点重启。在所有这些情况下,重新连接的屏幕需要立即显示正确的状态,而非在加载动画、进度条或5秒轮询间隔之后。低于50毫秒意味着屏幕从空白到正确的速度如此之快,观察者无法察觉它曾经断开过。 扩展到50个并发屏幕引入了大多数WebSocket教程简化处理的挑战。简单的方法是服务器向每个客户端发送单独的消息,这意味着每个传输命令需要50条消息。这线性扩展,可能产生压垮服务器网络缓冲区的发送流量突发。Timers Studio使用广播模式,服务器将消息写入通道一次,WebSocket基础设施在传输层处理扇出。无论10个还是50个客户端连接,服务器的CPU开销都不会显著增加。 还有重连风暴的问题。如果场馆的WiFi中断30秒然后恢复,所有50个屏幕将同时尝试重新连接。没有精心的工程设计,这种涌入可能导致WebSocket服务器崩溃,或产生在之后数分钟内降低性能的惊群效应。Timers Studio的重连逻辑使用带抖动的指数退避,每个客户端等待略有不同的随机间隔后再重新连接。这将重连负载分散到数秒之内,而非集中在单一时刻。 来回答制作团队经常问的问题:如果互联网连接完全失败怎么办?Player屏幕会继续显示最后已知的状态。正在运行的倒计时会继续在本地倒计时,因为Player维护着基于最后接收到的服务器时间戳驱动的自己的动画循环。这意味着即使在网络中断期间,观众看到的计时器仍在计数,在单个设备短期漂移容差范围内仍然准确。当连接恢复时,Player自动重新同步,在没有可见跳跃的情况下纠正累积的漂移。 该架构还能优雅地处理异构网络条件。在实际场馆中,并非每个屏幕都有相同的网络路径。一些在以太网上,一些在5GHz WiFi上,一些在2.4GHz上。更快连接上的屏幕比更慢连接上的屏幕提前几毫秒接收更新,但由于所有路径的绝对延迟都远低于人类感知阈值,这种差异是不可感知的。 对于评估网页端工具能否处理其规模的活动制作人来说,相关的问题不是抽象的"它能支持多少屏幕"。相关的问题是架构是否为并发实时传递而设计,还是为单用户设计后用轮询和缓存作为事后补丁扩展的。[查看控制台] 你可以同时在多个浏览器标签中打开Player URL来自行测试Timers Studio的多屏幕行为。每个标签的行为与单独的物理屏幕完全一致,它们之间的同步是即时且一致的。 我在文章开头描述的那个会展中心部署完美运行了三天。从未需要手动重新同步。没有屏幕显示过不正确的状态。制作团队完全忘记了计时器基础设施的存在,这正是导播所追求的基础设施的理想状态。[立即体验] [打开工作室]