前端架构

通知去重设计:同一事件只提醒一次,但不能漏提醒

用事件 ID、通知类型、实体版本、展示窗口和持久确认去重浏览器通知与站内提示,处理多标签、重连回放和权限变化。

一项能力能否长期维护,不取决于演示是否成功,而取决于团队能否解释每个状态、每次重试和每一份残留数据。 协议去重与通知去重不是同一件事:一条状态更新可以合法重复处理,却不应重复打扰用户。多标签还可能同时收到同一事件,需要选出唯一展示者。

前端架构的核心不是目录层级,而是状态由谁拥有、事件能否重复执行、旧异步结果如何失效,以及卸载后监听器和资源是否真正归零。

设计时必须回答的问题

落地时要把关键选择变成稳定契约:输入如何校验、状态由谁推进、资源何时释放、旧版本如何降级。只有这样,后续优化才不会改变原有语义。

  • 通知键由事件 ID、类型和实体版本组成,不能只用文案或发送者。
  • 使用 BroadcastChannel 或共享存储协调多标签,前台活动标签优先展示。
  • 对需要再次提醒的请求定义明确升级版本或冷却期,而不是永久吞掉。

通知去重保护的是用户注意力。稳定身份、多标签协调和可解释的再次提醒规则缺一不可,单纯时间防抖会漏掉真实事件。

边界情况不是附加项

最值得优先排查的是会静默留下错误事实的故障:界面看似恢复,底层队列、权限或计数却已分叉。这类问题通常在下一次动作才暴露。

  • 两条不同文件都叫 report.pdf,按文案去重导致第二条通知消失。
  • 浏览器通知与站内 toast 使用不同去重存储,同一事件仍提醒两次。
  • 去重记录永不清理,长期占用存储并意外屏蔽未来复用 ID。

用证据确认它真的可用

验证时同时观察两端状态、持久化记录和可观测指标。单看某个按钮或一次接口响应,无法证明整个闭环成立。

  1. 三标签同时在线、一个前台、两个后台,事件只由正确标签提醒一次。
  2. 重放相同事件、新版本事件和同文案不同 ID,分别验证屏蔽与展示。
  3. 权限从允许变拒绝再恢复,站内提示与系统通知仍保持一致计数。

最终结果应同时满足正确性、可恢复性和可解释性。任何一项只能依赖刷新页面或工程师猜测,都说明协议闭环仍不完整。

把方法变成一次真实连接

打开 uCopy,让两台设备在浏览器里安全连接并开始传输。

开始免费使用