694 字
2 分钟
在Cloudflare Workers上部署EasyTier WebSocket服务端
2026-01-31
2026-03-31

GitHub 项目地址#

Teleseon
/
cf-workers-et-ws
Waiting for api.github.com...
00K
0K
0K
Waiting...

EasyTier WebSocket for Cloudflare Workers#

项目简介#

该项目是 EasyTier 的第三方服务端实现。EasyTier 是一个去中心化 P2P 组网程序,官方代码使用 Rust 实现。本项目使用 Cloudflare Worker + Durable Object 实现了 JavaScript 版本的 WebSocket 服务端,支持网络转发与 P2P 打洞信息交换。

注意:本项目仅供学习交流使用

技术架构#

  • 基于 Cloudflare Workers 和 Durable Objects
  • 使用 WebSocket 协议进行实时通信
  • 采用 Protocol Buffers 进行高效序列化
  • 支持消息加密与完整性保护
  • 模块化设计,便于扩展和维护

开发环境搭建#

前置要求#

  • Node.js (>= 16.0.0)
  • pnpm (推荐) 或 npm
  • Wrangler CLI (Cloudflare Workers 工具链)

安装步骤#

  1. 克隆项目仓库:
git clone <your-repo-url>
cd easytier-ws-relay
  1. 安装依赖:
pnpm install
# 或者使用 npm
npm install
  1. 安装 Wrangler CLI:
npm install -g wrangler
  1. 登录 Cloudflare:
wrangler login

本地开发#

启动开发服务器#

# 启动本地开发服务器
pnpm run dev
# 或者
wrangler dev --ip 0.0.0.0

直接启动(不监听文件变化)#

pnpm run start
# 或者
wrangler dev

部署到 Cloudflare#

部署命令#

# 部署到 Cloudflare Workers
wrangler deploy

配置说明#

项目使用 wrangler.toml 文件进行配置,主要配置项包括:

  • name: Worker 名称
  • main: 入口文件路径
  • compatibility_date: 兼容性日期
  • Durable Objects 配置
  • 环境变量配置

项目结构#

easytier-ws-relay/
├── protos/ # Protocol Buffers 定义
│ ├── google
│ │ └── protobuf
│ │ └── timestamp.proto
│ ├── common.proto # 通用协议定义
│ ├── error.proto # 错误协议定义
│ └── peer_rpc.proto # 对等节点 RPC 协议定义
├── src/
│ ├── worker/ # Worker 实现
│ │ ├── core/ # Worker 核心功能
│ │ │ ├── basic_handlers.js # 基础处理器
│ │ │ ├── compress.js # 压缩功能
│ │ │ ├── constants.js # 常量定义
│ │ │ ├── crypto.js # 加密功能
│ │ │ ├── packet.js # 数据包处理
│ │ │ ├── peer_manager.js # 对等节点管理
│ │ │ ├── protos.js # Protobuf 相关功能
│ │ │ ├── protos_generated.js # Protobuf 生成的代码
│ │ │ └── rpc_handler.js # RPC 处理器
│ │ └── relay_room.js # 中继房间实现
│ └── worker.js # Worker 入口文件
├── package.json # 项目配置
├── wrangler.toml # Cloudflare Workers 配置
└── README.md # 项目说明

功能特性#

  • WebSocket 双向通信中继
  • 基于 Room 的连接管理
  • 使用 Protobuf 进行高效序列化
  • 消息加密与完整性保护
  • 客户端状态管理与心跳维持
  • RPC 请求/响应处理机制

纯 P2P 模式#

wrangler.toml[vars] 中配置:

  • EASYTIER_DISABLE_RELAY: "1" 开启纯 P2P,默认 "0"
  • EASYTIER_COMPRESS_RPC: "0" 关闭 RPC 压缩(调试用),默认 "1"

修改完配置后按正常方式运行 wrangler dev 或部署即可生效。

Durable Object 地区配置#

Durable Object 默认会根据请求来源自动选择最近的地区部署。如需指定地区,可在 wrangler.toml[vars] 中配置:

  • LOCATION_HINT: Durable Object 的位置提示,可选值如下:
参数地区
wnam西部地区(北美)
enam东部地区(北美)
sam南美洲
weur西欧
eeur东欧
apac亚太地区(默认)
oc大洋洲
afr非洲
me中东

详细说明请参考 Cloudflare 官方文档

修改完配置后按正常方式运行 wrangler dev 或部署即可生效。

客户端连接说明#

部署后,EasyTier 客户端连接地址需要添加路径 /ws

默认情况下,WebSocket路径为/ws,该路径可以在wrangler.toml中通过WS_PATH变量进行自定义。

easytier中端口号使用0为使用协议默认端口,ws对应80,wss对应443。

开发模式:

ws://your-network-ip:0/ws

部署后:

wss://your-deployment.workers.dev:0/ws

免责声明#

本项目仅供学习交流使用,请勿用于任何商业用途或非法用途。使用本项目代码造成的任何后果,原作者概不负责。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

在Cloudflare Workers上部署EasyTier WebSocket服务端
https://blog.teleseon.cn/posts/easytier-websocket-cloudflare-workers/
作者
Atomire
发布于
2026-01-31
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录