爱意满满的作品展示区。
bmpidev2019

重写了三次的 WebRTC 语音聊天室: free4.chat,现在又用 Cloudflare 全栈重写了

  •  
  •   bmpidev2019 ·
    PRO
    ·
    madawei2699 · 2h 12m ago · 212 views

    四年前我发了第一个帖子介绍这个项目:搭了一个 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 和回复都欢迎。

    1 replies    2026-05-17 16:38:28 +08:00
    409164
        1
    409164  
       1h 47m ago
    因为安全原因,所以我一般禁用 WebRTC
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2887 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:26 · PVG 18:26 · LAX 03:26 · JFK 06:26
    ♥ Do have faith in what you're doing.