117 lines
2.9 KiB
Markdown
117 lines
2.9 KiB
Markdown
|
|
# FunConnect Server
|
|||
|
|
|
|||
|
|
Minecraft 联机中继服务端,包含 TCP 中继引擎、REST API、WebSocket 实时通信、Web 管理面板。
|
|||
|
|
|
|||
|
|
## 功能
|
|||
|
|
|
|||
|
|
- **TCP 中继引擎** - 转发 Minecraft 客户端与服务端之间的流量
|
|||
|
|
- **多节点集群** - 支持主节点 + 工作节点架构,水平扩展
|
|||
|
|
- **房间管理** - 创建、加入、密码验证、过期清理
|
|||
|
|
- **玩家管理** - 玩家列表、踢出玩家
|
|||
|
|
- **流量监控** - 实时统计各房间流量
|
|||
|
|
- **Token 认证** - 保护写操作 API
|
|||
|
|
- **Web 管理面板** - React + Vite + TailwindCSS 构建的可视化管理界面
|
|||
|
|
|
|||
|
|
## 快速开始
|
|||
|
|
|
|||
|
|
### 安装依赖
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 服务端
|
|||
|
|
npm install
|
|||
|
|
|
|||
|
|
# Web 管理面板
|
|||
|
|
cd web && npm install
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
复制 `.env.example` 为 `.env` 并修改:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cp .env.example .env
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
关键配置项:
|
|||
|
|
- `API_PORT` - HTTP API 端口(默认 3000)
|
|||
|
|
- `RELAY_PORT` - TCP 中继端口(默认 25565)
|
|||
|
|
- `IS_MASTER` - 是否为主节点
|
|||
|
|
- `SECRET` - API 认证密钥(留空则不启用认证)
|
|||
|
|
|
|||
|
|
### 启动
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 开发模式
|
|||
|
|
npm run dev
|
|||
|
|
|
|||
|
|
# 生产模式
|
|||
|
|
npm run build
|
|||
|
|
npm start
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 启动 Web 管理面板
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd web
|
|||
|
|
npm run dev
|
|||
|
|
# 访问 http://localhost:5173
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Ubuntu 一键部署
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
chmod +x deploy/install.sh
|
|||
|
|
sudo ./deploy/install.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 项目结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
server/
|
|||
|
|
├── src/
|
|||
|
|
│ ├── index.ts # 主入口
|
|||
|
|
│ ├── config.ts # 配置管理
|
|||
|
|
│ ├── logger.ts # 日志系统
|
|||
|
|
│ ├── relay.ts # TCP 中继引擎
|
|||
|
|
│ ├── room.ts # 房间管理
|
|||
|
|
│ ├── node-manager.ts # 多节点管理
|
|||
|
|
│ ├── api.ts # REST API
|
|||
|
|
│ └── websocket.ts # WebSocket 实时通信
|
|||
|
|
├── web/ # Web 管理面板
|
|||
|
|
│ ├── src/
|
|||
|
|
│ │ ├── App.tsx # 主组件
|
|||
|
|
│ │ ├── api.ts # API 客户端
|
|||
|
|
│ │ └── pages/ # 页面组件
|
|||
|
|
│ └── package.json
|
|||
|
|
├── deploy/
|
|||
|
|
│ └── install.sh # Ubuntu 部署脚本
|
|||
|
|
├── .env.example
|
|||
|
|
├── package.json
|
|||
|
|
└── tsconfig.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## API 文档
|
|||
|
|
|
|||
|
|
| 方法 | 路径 | 说明 | 认证 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| GET | `/api/health` | 健康检查 | 否 |
|
|||
|
|
| GET | `/api/stats` | 服务器统计 | 否 |
|
|||
|
|
| GET | `/api/rooms` | 房间列表 | 否 |
|
|||
|
|
| POST | `/api/rooms` | 创建房间 | 是 |
|
|||
|
|
| GET | `/api/rooms/:id` | 房间详情 + 玩家列表 | 否 |
|
|||
|
|
| POST | `/api/rooms/:id/join` | 加入验证(密码校验)| 是 |
|
|||
|
|
| POST | `/api/rooms/:id/kick/:pid` | 踢出玩家 | 是 |
|
|||
|
|
| DELETE | `/api/rooms/:id` | 删除房间 | 是 |
|
|||
|
|
| GET | `/api/traffic` | 流量统计 | 否 |
|
|||
|
|
| GET | `/api/nodes` | 节点列表(主节点)| 否 |
|
|||
|
|
| POST | `/api/nodes/register` | 注册节点 | 是 |
|
|||
|
|
| DELETE | `/api/nodes/:id` | 移除节点 | 是 |
|
|||
|
|
|
|||
|
|
## 技术栈
|
|||
|
|
|
|||
|
|
- **Node.js + TypeScript**
|
|||
|
|
- **Express** - HTTP API
|
|||
|
|
- **ws** - WebSocket
|
|||
|
|
- **Winston** - 日志
|
|||
|
|
- **React 18 + Vite + TailwindCSS** - Web 管理面板
|