Cloudflare Workers 中继

电脑和手机都在 NAT 之后时,把 Droidline 中继部署到你自己的 Cloudflare 账户。不需要维护一台常驻服务器。

本页为译文。如与英文版不一致,以英文版为准。 English

适用情况:电脑和手机都无法接受连接(例如电脑在家用路由器后面,手机使用移动数据),而你又不想运行服务器。不适用情况:你需要的流量超出免费套餐,又不想使用付费套餐;或者你希望所有东西都放在自己控制的硬件上(请使用 VPS 中继)。

电脑和手机都通过 WSS 主动连接中继。中继按服务器 ID 和设备 ID 把它们配对,转发它无法读取的数据行。所有人使用的都是同一份代码;你部署的是属于自己的副本。

部署

用按钮部署:打开 Deploy to Cloudflare,登录,在要求填写 RELAY_TOKEN 时,粘贴一个足够长的随机密钥:

node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))"

也可以从检出的代码部署:

cd relay/worker
npm ci
npx wrangler deploy
npx wrangler secret put RELAY_TOKEN

部署完成后会打印中继的地址,例如 https://droidline-relay.your-account.workers.dev。在设置密钥之前,中继会返回 503。

连接电脑

droidline relay set https://droidline-relay.your-account.workers.dev <RELAY_TOKEN>

重启 droidline serve。日志中会显示 relay connected。新手机通过配对二维码获得中继信息。已配对的手机下次在 Wi-Fi 下连接时,会收到属于自己的中继票据;每张票据只绑定一部手机,所以手机本身从不持有中继令牌。

免费套餐

Cloudflare 免费套餐中的 Durable Objects 每天允许 100,000 次请求,传入的 WebSocket 消息每 20 条计为一次请求(Cloudflare 定价)。空闲的手机每 25 秒发送一次 ping,电脑通过中继逐一回复,两者合计每天约 350 次请求。命令、截图和 dump 会在此基础上增加用量。超出免费套餐后,Workers 付费套餐会提高这些限制。

中继强制执行的限制

  • 每部手机每秒最多发送 50 行,突发时最多 200 行。手机会自行控制发送节奏,保持在限制以内。
  • 同一部手机的第二个连接会取代第一个。
  • 配对票据无法挤掉已经用自己的票据连接的手机。