⚡ 棱镜如何实现超低延迟消息?
▼
棱镜使用 Supabase 的 Realtime 功能,基于 WebSocket 建立持久连接。当数据库发生变更(INSERT/UPDATE/DELETE),服务器主动推送变更事件到所有订阅的客户端,无需轮询。再结合边缘函数与 CDN 加速,端到端延迟可控制在 25-50ms 以内。
🔒 数据安全如何保障?
▼
所有网络请求均使用 HTTPS/TLS 加密。数据库层面实施行级安全 (RLS):每张表都定义了细粒度的访问策略,例如用户只能读取自己的 profile,管理员可编辑任何消息。存储桶同样配置了策略,控制上传与删除权限。
📦 媒体文件如何高效存储与分发?
▼
棱镜使用 Supabase Storage 存放用户上传的图片、视频与音频。文件通过 XMLHttpRequest 直接上传至对象存储,获得公开 URL。全球 CDN 节点确保文件快速加载。管理员删除消息时,也会自动删除关联的存储对象,节省空间。
🛡️ 什么是行级安全 (RLS)?
▼
RLS 是 PostgreSQL 的一项功能,允许定义策略来控制哪些行对用户可见。例如,`profiles` 表可以设置“认证用户可以查看所有 profiles”的策略。棱镜大量使用 RLS 来管理消息读取、修改与删除权限,确保数据安全且灵活。
📡 消息如何实时推送到所有设备?
▼
每个客户端订阅 PostgreSQL 的 Realtime 频道,监听特定表的 INSERT、UPDATE、DELETE 事件。服务端通过 Phoenix Channels (Elixir) 广播变更,所有在线客户端几乎同时收到更新。结合乐观 UI 更新,用户感觉不到任何延迟。
🖥️ 前端界面特效是如何实现的?
▼
使用 CSS 的 `backdrop-filter: blur()` 和半透明背景色,配合 `-webkit-backdrop-filter` 兼容 Safari。所有卡片、导航栏、输入区域都应用了这种毛玻璃效果,背景动态渐变则通过 `radial-gradient` 和关键帧动画实现。
🎭 匿名与登录如何共存?
▼
数据库的 `user_id` 字段允许为 NULL,代表匿名消息。RLS 策略允许任何人(包括未认证用户)插入消息。前端在发送时判断登录状态,若未登录则将 `user_id` 留空,并显示为“匿名”。这样既保护隐私,又保留了完整的消息功能。
🔄 跨平台同步是如何实现的?
▼
无论 Windows、Android 还是 Web 客户端,都使用同一套 Supabase 后端。消息、用户资料、媒体文件均存储在云端数据库中。任何客户端发送的消息都会实时推送给所有订阅者,因此切换设备时可无缝接续对话。