光线与消息在此交错

基于 Supabase Realtime 的极速聊天应用 · 支持多媒体、匿名、在线状态 · 全平台 Web 即开即用

🌐 Web 版 💻 Windows 版 📱 Android 版
Web 版 · 即时可用,无需安装 · 支持所有现代浏览器
Windows 版 v0.0.1 · 31.4 MB · 支持 Windows 10/11
Android 版 v2.1.0 · 10.8 MB · 支持 Android 9+
消息实时同步,低延迟架构,支持图片/视频/音频,匿名与登录共存

📊 棱镜·数据看板

总消息数
今日消息
总用户数
近30日日均活跃

💬 用户心声

到此处加载评价...
📝 留下你的评价
点击星星打分(1–5星),写下你的感受
当前:0

📨 最新公共消息

滑到这里,加载最新消息...

核心特性

实时消息

基于 Supabase Realtime + WebSocket,消息推送延迟低于 50ms,无刷新自动更新,体验流畅。

🖼️

多媒体分享

支持上传图片、视频、音频,也支持麦克风录音,文件大小上限 50MB,自动生成预览。

👤

匿名与登录

未登录可匿名发言,登录后拥有专属身份,消息记录云端同步,灵活切换。

🛡️

权限控制

支持消息编辑与删除,权限细化管理,不同角色拥有不同操作权限,保障内容健康。

🟢

在线状态

实时显示在线人数,新用户加入/离开有动态提示,社交感更强。

🎨

玻璃质感 UI

毛玻璃 + 渐变光效,支持简约模式切换,视觉舒适,适配深色/浅色。

📱

全平台 Web

浏览器直接访问,无需安装,手机、平板、电脑均可使用,消息同步。

🔐

行级安全 (RLS)

数据表启用 PostgreSQL RLS,匿名与登录用户权限分离,确保数据安全。

📷

原画质上传

所有媒体直接上传,完整保留每一处细节。单个文件最大支持 50MB,素材高品质。支持 HEIC/WebP 等现代格式。

🎤

语音录制

内置录音功能,一键录制并发送音频消息,沟通更便捷。

📥

滚动加载更多

消息列表支持无限滚动,历史消息自动加载,浏览更轻松。

🧩

简约模式

一键切换至纯色背景、无毛玻璃效果,适合低性能设备或偏好简洁的用户。

🚀 快速部署

1️⃣ 注册 Supabase 并获取配置

📌 第一步:创建项目
访问 Supabase 官网,使用 GitHub 或邮箱注册。进入仪表盘后,点击 “New project” 创建一个新项目。
项目名称 可自由填写,Database Password 请务必妥善保存(后续需要用到)。创建完成后,等待数据库初始化(约 1-2 分钟)。

📌 第二步:获取 Project URL 和 anon public 密钥
在项目仪表盘的左侧菜单中,点击 Settings(设置)→ 选择 API 选项卡。
Project URL:在 “Project URL” 一栏中复制完整的链接(例如 https://xxxxx.supabase.co)。
anon public 密钥:在 “Project API keys” 区域,找到 anon public 那一行,点击复制图标(注意:不是 service_role 密钥,该密钥仅用于后端)。
请将这两项保存在记事本中,后续步骤会用到。

2️⃣ 输入配置,生成你的专属应用链接

将上一步获取的 Project URLanon public 密钥填入下方,点击按钮即可生成可直接访问的在线应用链接(参数将自动附加到地址后)。

复制此链接,在浏览器中打开即可直接使用应用

3️⃣ 执行数据库初始化 SQL

在 Supabase 仪表盘左侧菜单点击 SQL Editor,然后点击 “New query” 新建一个查询窗口。将下方完整 SQL 脚本粘贴进去,点击 “Run” 执行。该脚本会创建所有必要的表、行级安全策略、存储桶及权限。

执行完毕后,数据库即准备就绪。若执行过程中出现 “already exists” 提示,可忽略(说明对象已存在)。

4️⃣ 部署应用

选择以下任一方式部署你的应用:

  • 方式一(推荐):直接使用生成的链接
    即步骤2生成的链接(如 https://my.xiguacity.cn/study/.../example.html?supabaseUrl=...&supabaseKey=...),复制后在浏览器中打开即可立即使用,无需任何额外部署。
  • 方式二:部署到静态托管平台(适合自定义域名、更高稳定性)
    下载源码 index.html(已内置示例配置,或可自行修改),将其部署到以下免费平台,获取专属域名:
    • Cloudflare Pages – 支持 Git 仓库或直接上传文件夹,自动 HTTPS,全球 CDN 加速。
    • Netlify – 拖拽上传或连接 Git,自动构建,可配置重定向。
    • Vercel – 同样支持静态站点,极速部署,与 GitHub 集成方便。
    部署后,你的应用即可通过平台提供的域名访问,所有消息数据均与你的 Supabase 项目实时同步。

提示:如需手动修改配置,打开下载的 index.html,替换 SUPABASE_URLSUPABASE_ANON_KEY(位于脚本开头),保存后上传即可。

5️⃣ 校验部署

部署完成后,请进行以下测试,确保所有功能正常运行:

  • 注册与登录 – 点击 “登录” 尝试注册一个新账号(若遇到 “Email not confirmed” 错误,请参考下方常见问题解决)。登录后应能看到用户名显示在右上角。
  • 发送消息 – 在输入框中输入文字,点击发送,消息应立即出现在列表顶部(无需刷新)。
  • 发送媒体 – 点击 📎 按钮,选择图片或录音,上传并发送,应能正常显示预览。
  • 实时性 – 打开两个浏览器窗口(或使用不同设备),分别登录不同账号,互相发送消息,验证实时同步是否正常。
  • 在线状态 – 观察顶部的在线人数圆点,当有人登录或退出时,状态应实时更新。
  • 管理员权限 – 若你已将自己的账号设为管理员(修改 profiles.is_admin = true),消息卡片应出现 “编辑” 和 “删除” 按钮。

如果以上测试全部通过,说明部署成功!🎉

❓ 常见问题

🔐 登录失败:Email not confirmed
原因:Supabase 默认开启了邮箱确认。解决方案:在 Supabase 仪表盘中,进入 Authentication → Settings,在左侧栏找到 Sign In / Providers 区域,将 Confirm email 开关关闭(或开启 “Allow unconfirmed users to sign in”)。保存后重新注册即可。
📊 加载消息失败:Could not find the table 'public.messages' in the schema cache
原因:SQL 脚本未正确执行或表未被创建。解决方案:回到 SQL Editor,重新执行完整的 SQL 脚本(步骤3),确保没有报错。执行后刷新应用。
📎 上传文件失败:Permission denied or Bucket not found
检查存储桶 media 是否已创建,以及 RLS 策略是否已应用。确认 SQL 脚本中包含存储桶创建语句,并已在 SQL Editor 中执行。
🔄 消息不能实时更新
检查浏览器控制台是否有 WebSocket 连接错误。可能原因:Supabase 项目 URL 填写错误,或网络环境阻止了 Realtime 连接。确认 SUPABASE_URL 无误,并检查防火墙设置。
🔑 如何将普通用户升为管理员?
在 Supabase 仪表盘的 Table Editor 中打开 profiles 表,找到目标用户记录,将其 is_admin 字段值由 false 改为 true,点击保存。刷新应用后,该用户即可看到消息的“编辑”和“删除”按钮。
📦 媒体文件存储在哪里?
所有图片、视频、音频均存储在 Supabase Storage 的 media 桶中,文件公开可读,仅管理员可删除(由存储桶策略控制)。
🛡️ RLS 策略是否足够安全?
是的,所有查询都经过行级安全策略限制,匿名用户无法修改任何数据,认证用户只能插入消息(无法更新/删除),仅管理员拥有完整增删改权限。建议定期审查策略以确保符合你的业务需求。
📱 移动端适配如何?
Web 版已完全适配移动端浏览器,适用了所有现代浏览器。
🔧 如果遇到其他错误怎么办?
请按顺序检查:① Supabase 项目是否正常运行;② URL 和 anon key 是否填写正确(无多余空格);③ 是否已执行完整的 SQL 脚本;④ 浏览器控制台(F12)有无报错。也可使用电话直接联系开发者。
📝 应用名称和图标可以修改吗?
可以。下载源码后,修改 <title> 标签和导航栏中的文字,替换 <link rel="icon"> 即可。
📌 如何升级到最新版本?
重新下载最新源码,替换原有 index.html 文件(注意备份配置)。若使用生成的链接,则始终指向最新在线版本,无需手动升级。

🌍 适用场景

摸鱼划水

上班无聊了上来看看陌生人在聊什么,偶尔插一句,解压不粘人。

🌙

深夜树洞

失眠时打开,听陌生人放的录音、写的心事,像是深夜电台。

🎧

背景音陪伴

有人放白噪音、弹琴录音、雨声,挂着当背景音做事,不孤单。

😂

接龙玩梗

一个人起头,一群人接力编故事、成语接龙、斗图,纯粹找乐子。

📝

即时留言板

想到什么吼一句就走,无需注册登录,像贴在墙上的便签条。

📢

匿名吐槽

对工作的牢骚、生活的破事,换个马甲尽情倒,说完就舒服了。

随手问答

突然想问个冷知识或者求推荐,丢进来看有没有路人接茬。

🫥

人间观察

潜水看众生百态,不发言不参与,安安静静当一个围观群众。

❓ 常见问题

🔐 我的数据安全吗?
所有请求通过 HTTPS 加密,数据库 RLS 策略严格限定访问范围,匿名用户仅能读取消息,无法修改或删除。密码通过 Supabase Auth 安全存储。
📱 原生移动端支持如何?
目前 Web 版已适配移动端浏览器,可在手机上直接使用。同时 Windows 版已提供下载,Android 原生客户端测试中,后续将提供更加流畅的原生体验。
📨 离线消息能收到吗?
Web 版需保持页面打开,离线期间的消息将在重新连接后通过 Realtime 自动拉取,不会丢失。
👥 群组最多支持多少人?
当前为公开聊天室,无群组概念,所有在线用户共同参与,未来可能拓展频道功能。
🎤 录音功能如何工作?
使用浏览器 MediaRecorder API 录制麦克风,生成 WebM 音频文件,上传后作为消息媒体发送,支持最长 5 分钟录制。
🧹 如何清除我的消息?
普通用户目前无法自主删除,具备权限的角色可代为删除。未来将开放用户自删功能。

📋 更新日志

v2.1.02026-07-10
  • 新增 语音录制功能
  • 优化 滚动加载更多
  • 修复 媒体上传进度显示异常
v2.0.52026-03-06
  • 新增 简约模式切换
  • 新增 消息编辑/删除权限控制
  • 优化 在线状态显示更实时
v2.0.02026-04-12
  • 重大 全新玻璃质感 UI 上线
  • 新增 多媒体上传
  • 新增 匿名与登录双模式

🔍 深入技术原理

⚡ 实时消息如何实现?
前端通过 Supabase Realtime 订阅 `messages` 表的 INSERT/UPDATE/DELETE 事件,服务端通过 PostgreSQL 触发器推送变更,WebSocket 长连接保证低延迟推送,无需轮询。
🔒 匿名与登录的数据隔离?
`messages` 表中 `user_id` 允许为 NULL(匿名),行级安全策略 (RLS) 控制读取权限:所有用户可读,但只有登录用户可插入带 user_id 的消息,匿名插入则 user_id 为 NULL。
📦 媒体文件存储与分发?
使用 Supabase Storage,通过 Token 认证上传,文件存储于 `media` bucket,生成公开 URL 供访问,支持断点续传,CDN 加速。
🟢 在线状态如何追踪?
使用 Supabase Realtime Presence API,每个客户端订阅 `online-users` 频道,自动追踪用户在线状态,实时更新人数和加入/离开事件。
🎨 简约模式原理?
通过 CSS 类 `simple-mode` 覆盖样式,移除 `backdrop-filter`、`blur`、`box-shadow` 等复杂效果,降低 GPU 负担,提升老旧设备流畅度。
🛡️ 权限控制如何实现?
`profiles` 表有 `is_admin` 字段用于标识特殊权限,前端根据该字段显示编辑/删除按钮,后端 RLS 策略限制仅特定角色可 UPDATE/DELETE 消息,实现细粒度权限管理。
📞

联系我们

186 2782 1503

如有任何问题或建议,欢迎来电咨询。
我们将在工作日内及时回复。

📱 立即拨打

🧰 技术栈

⚛️Supabase
📦PostgreSQL
🔄Realtime
🗄️Storage
🔐Auth (JWT)
🎨CSS3 + Flex
📡WebSocket
📱PWA 就绪

管理员模式

⏳ 待审核评价
✅ 已审核评价