Cloudflare Workers + Durable Objects 的一起听服务端部署要点
服务端架构
一起听服务端是 NeriPlayer 的独立子模块 np-submodule/NeriPlayer-LTW,部署在 Cloudflare Workers:
- Durable Objects:持久化房间状态(成员、队列、播放位置、候选缓存)
- WebSocket:客户端与 Worker 之间的实时播放状态同步
- Worker 路由:HTTP 接口处理房间创建/加入、WebSocket 接口处理实时状态
为什么用 Durable Objects
Durable Objects 是 Cloudflare Workers 的持久化计算单元,适合一起听这种:
- 需要跨请求持久状态(房间不会因为 Worker 冷启动丢失)
- 需要强一致性(所有成员的播放状态必须对齐)
- 成员数量可控(不需要无限扩展)
每个房间对应一个 Durable Object 实例,生命周期从房主创建到最后一个成员离开。
自定义服务端地址
客户端支持自定义服务端地址——你可以把 Worker 部署到自己的 Cloudflare 账号,然后在 NeriPlayer 设置里填入自定义地址。房间的 WebSocket 连接就会直接连到你的 Worker,不经过原作者的服务器。
部署流程概要
- 克隆
np-submodule/NeriPlayer-LTW子模块 - 配置
wrangler.toml(Durable Object 名称、路由、KV 命名空间) - 执行
wrangler deploy部署到你的 Cloudflare Workers - 在 NeriPlayer 设置的「一起听」中填入自定义服务端 URL
详细部署步骤请参考 CONTRIBUTING.md 的「一起听服务端部署」章节。
客户端版本与服务端兼容性
客户端和服务端之间有版本门控更新机制——只有客户端版本满足条件的成员才会收到新的控制指令。如果你部署了自己的 Worker 并修改了协议,请确认客户端版本与之匹配。