# 中继服务器与游戏目录 服务器通过中继(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` | 自定义 | 手动填写网络名与密钥 | ## 相关页面 - [联机房间操作](rooms.md) - [REST API 参考](rest-api.md) - [配置参考](configuration.md)