relay servers - yumi-furry/AstralGame-cli GitHub Wiki
中继服务器与游戏目录
服务器通过中继(relay)节点与其他客户端互通,房间创建时只把已启用的服务器写入邀请载荷。服务器列表持久化在可执行文件同目录的 servers.json(自动生成,可自由编辑)。
服务器列表
servers.json 中的条目结构:
| 字段 | 类型 | 说明 |
|---|---|---|
id |
int | 本地自增主键 |
name |
string | 用户可读名称 |
uri |
string | EasyTier 监听 URI(含协议前缀,如 tcp://1.2.3.4:11010) |
enabled |
bool | 是否启用:只有启用的服务器才会被写入新建房间的 peers |
sort_order |
int | 排序序号(当前 UI 按添加顺序使用) |
- 首次运行(文件不存在)时返回内置默认列表:
公共中继(tcp://public.easytier.cn:11010,已启用); - 文件存在但内容损坏时返回空列表,避免坏数据导致面板不可用;
- 保存时全量覆盖写入 pretty JSON。
面板 / API 操作
| 操作 | 接口 | 说明 |
|---|---|---|
| 列表 | GET /api/servers |
全部中继服务器(含启用状态、排序) |
| 新增 | POST /api/servers |
请求体 name、uri;默认启用,id 与排序号取当前最大值 +1 |
| 修改 | PUT /api/servers/:id |
name / uri / enabled 均可选,局部更新 |
| 删除 | DELETE /api/servers/:id |
条目不存在返回 404 |
| 测速 | GET /api/servers/ping |
并发 TCP 连接测延迟,返回各服务器 latency_ms |
测速说明
- 每个服务器一个并发任务,避免串行等待超时;
- 从 URI 解析
host:port,测量 TCP 握手耗时;缺省端口按 EasyTier 默认11010; - 成功返回毫秒数;连接失败或 5 秒超时返回
-1(前端显示为"超时")。
内置游戏目录
GET /api/games 返回内置游戏目录(硬编码),id 用于建房请求,icon 为空串表示无图标:
| id | 名称 | 说明 |
|---|---|---|
minecraft |
我的世界 | 开局域网世界,客人在本机游戏列表加入 |
grand_theft_auto_v |
侠盗猎车手5 | 同时支持传承版和增强版以及跨平台联机 |
mindustry |
Mindustry | 塔防 + 工厂建设沙盒 |
raft |
木筏求生 | 海上生存建造 |
forged_alliance |
最高指挥官:钢铁联盟 | RTS 经典 |
valheim |
英灵神殿 | 维京生存合作 |
ark |
方舟:生存进化 | 恐龙生存沙盒 |
dont_starve_together |
饥荒联机版 | 荒野生存合作 |
factorio |
异星工厂 | 自动化工厂建设 |
left_4_dead_2 |
求生之路2 | 合作求生射击 |
palworld |
幻兽帕鲁 | 帕鲁收集与生存 |
project_zomboid |
僵尸毁灭工程 | 僵尸生存沙盒 |
rust |
腐蚀 | 多人生存建造 |
satisfactory |
幸福工厂 | 第一人称工厂建设 |
seven_days_to_die |
七日杀 | 僵尸生存建造 |
stardew_valley |
星露谷物语 | 农场经营合作 |
terraria |
泰拉瑞亚 | 2D 沙盒冒险 |
v_rising |
夜族崛起 | 吸血鬼生存建造 |
custom |
自定义 | 手动填写网络名与密钥 |