四年前我发了第一个帖子介绍这个项目:搭了一个 WebRTC 语音聊天室,效果惊人 两年前用 Elixir 重写了一次:用 Elixir 重写 WebRTC 语音聊天室,自带集群扩容 现在又用 Cloudflare 全栈重写了一遍,顺便把一直想加的功能都加上了,水个帖子。
free4.chat 是什么? 一个无需注册、开箱即用的浏览器实时聊天室。你分享房间链接,对方打开就能聊,用完什么都不留。 核心理念就两个字:简单、隐私。 目前支持:
- 🎙️ 语音通话:多人房间,WebRTC SFU 架构,延迟低
- 💬 文字聊天:支持发文本、图片、文件
- 🖥️ 屏幕共享:一键分享,房间内所有人可见
- 🤖 Luna AI 助手:房间内 @luna 即可召唤 AI ,有上下文记忆,每个房间独立会话
- 🎮 互动小工具:白板、投票、小游戏(进行中)
开源地址: https://github.com/i365dev/free4chat
在线地址: https://free4.chat
这次重写做了什么? 之前是 Elixir 后端部署在 AWS EC2 + 前端部署在 Cloudflare Pages ,要维护两台服务器集群,运维成本不低。 这次用 Cloudflare 全栈重写:
- 前端:Next.js 15 ,通过 @opennextjs/cloudflare 编译成 Cloudflare Worker 运行
- 实时通信:换成 Dyte/RTK ( Realtime Kit ),托管 SFU ,不用自己维护媒体服务器了
- AI 会话:Cloudflare Durable Objects ,每个房间一个独立的 AI 会话,用 @cf/zai-org/glm-4.7-flash 模型
- 安全:Cloudflare Turnstile 防机器人,KV 限流,Origin 白名单 好处是运维降到接近零,不用管服务器,全部跑在 Cloudflare 边缘网络上。
Luna AI 是怎么工作的? 房间里任何人输入 @luna + 问题,就会触发 AI 回复。每个房间有独立的对话历史(最近 20 条),有每小时 30 次的限流,模型跑在 Cloudflare Workers AI 上。 类似于你在会议室里拉了一个随时可以问问题的助手进来。
一些技术研究(顺便记录) 研究过让 Luna 直接以「语音参与者」身份加入房间,可惜 RTK 是托管 SFU ,不暴露底层接口,没法从服务端注入音频流。这个方向暂时搁置,等 Cloudflare 官方开放相关 API 再看。
如果你之前用过,欢迎来试试新版。有问题或建议,issues 和回复都欢迎。