- Edit
- components/HelloWorld.vue to test HMR
-
- Check out - create-vue, the official Vue + Vite starter -
-- Learn more about IDE Support for Vue in the - Vue Docs Scaling up Guide. -
-Click on the Vite and Vue logos to learn more
- - - diff --git a/Frontend1/vite-project/vite.config.ts b/Frontend1/vite.config.ts similarity index 100% rename from Frontend1/vite-project/vite.config.ts rename to Frontend1/vite.config.ts diff --git a/PyServer/main.py b/PyServer/main.py index 2162ff2..6fe764d 100644 --- a/PyServer/main.py +++ b/PyServer/main.py @@ -338,8 +338,8 @@ class WebSocketHTTPRequestHandler(HTTPHandler): logger.info(f"WebSocket连接请求: {self.path}") self.send_error(426, "WebSocket upgrade required") # 这个错误不会被触发,因为websockets库会拦截请求 -async def handle_websocket(websocket, path): - """处理WebSocket连接""" +async def handle_websocket(websocket): + """处理WebSocket连接 - 修复版本,移除了path参数""" client_id = str(uuid.uuid4()) room_id = None client_type = 'unknown' @@ -593,6 +593,7 @@ def run_http_server(): async def run_websocket_server(): """运行WebSocket服务器""" try: + # 使用新的函数签名,不传递path参数 server = await websockets.serve(handle_websocket, '0.0.0.0', 81) logger.info("WebSocket服务器启动在端口 81") await server.wait_closed() diff --git a/PyServer/requirements.txt b/PyServer/requirements.txt new file mode 100644 index 0000000..8eeab54 --- /dev/null +++ b/PyServer/requirements.txt @@ -0,0 +1,4 @@ +websockets +aiohttp +requests +python-dateutil \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..5c33d11 --- /dev/null +++ b/README.md @@ -0,0 +1,194 @@ +# CC:Tweaked 远程文件编辑器 + +一个专为 ComputerCraft: Tweaked (CC:Tweaked) 设计的远程文件编辑器,支持实时文件管理和代码编辑。 + +网站 + +## 🌟 特性 + +### 核心功能 + +- **远程文件管理**:实时浏览、编辑和管理 CC:Tweaked 计算机中的文件 +- **Monaco 编辑器**:基于 VS Code 的 Monaco 编辑器,提供专业的代码编辑体验 +- **WebSocket 通信**:低延迟的双向通信,确保操作的实时性 + +### 文件操作 + +- ✅ 文件/文件夹创建、重命名、删除 +- ✅ 文本文件在线编辑和保存 +- ✅ 文件上传(支持多文件,最大 1MB) +- ✅ 文件下载到本地 +- ✅ 二进制文件识别(非文本文件显示为 `[binary]`) + +### CC:Tweaked 集成 + +- **自动命令生成**:根据 URL 参数自动生成连接命令 +- **一键复制**:点击即可复制连接命令到剪贴板 +- **房间管理**:支持创建和加入房间 +- **心跳保活**:自动维持连接稳定性 + +## 🚀 快速开始 + +### 项目结构 + +``` +项目根目录/ +├── PyServer/ # Python 后端服务器 +│ ├── main.py # 主服务器文件 +│ └── static/ # 静态文件目录(需手动创建) +│ └── Client/ +│ └── cc/ +│ └── main.lua # CC:Tweaked 客户端脚本 +├── Frontend1/ # Vue 前端项目 +│ ├── src/ +│ │ ├── App.vue # 主组件 +│ │ └── mock-server.ts # WebSocket 客户端 +│ └── package.json +└── Client/ # 客户端文件 + └── main.lua # CC:Tweaked 客户端脚本 +``` + +### 部署步骤 + +1. **部署后端服务器** + +```bash +# 进入后端目录 +cd PyServer + +# 创建静态文件目录 +mkdir -p static/Client/cc + +# 复制客户端脚本到静态目录 +cp ../Client/main.lua static/Client/cc/main.lua + +# 安装依赖 +pip install -r requirements.txt + +# 启动服务器(需要管理员权限绑定80端口) +python main.py +``` + +服务器将启动: + +- HTTP 服务:端口 80(文件服务和 API) +- WebSocket 服务:端口 81(实时通信) + +2. **构建前端项目** + +```bash +# 进入前端目录 +cd Frontend1 + +# 安装依赖 +npm install + +# 构建生产版本 +npm run build + +# 将构建产物复制到后端静态目录 +cp -r dist/* ../PyServer/static/ +``` + +3. **访问编辑器** + 打开浏览器访问 `http://你的服务器地址` 即可使用编辑器。 + +### CC:Tweaked 客户端连接 + +1. **获取连接命令** + + - 访问编辑器页面会自动创建房间 + - 在页面底部点击命令文本即可复制连接命令 + +2. **在游戏中运行** + +```lua +# 粘贴复制的命令到CC:Tweaked计算机 +# 命令格式类似:wget run http://服务器地址/Client/cc/main.lua ws://服务器ws地址 房间ID +``` + +3. **刷新文件列表** + - 在 CC 客户端连接成功后 + - 返回编辑器页面点击刷新按钮即可看到文件列表 + +## 🔧 功能说明 + +### 当前支持的功能 + +- 📁 文件系统浏览和操作 +- 📝 文本文件在线编辑 +- ⬆️ 文件上传(≤1MB) +- ⬇️ 文件下载到本地 +- 🔄 实时文件同步 + +### 限制说明 + +- **二进制文件**:非文本文件会显示为 `[binary]`,无法在线编辑 +- **单客户端**:目前主要支持一个网页端和一个 CC 客户端的配对使用 +- **文件大小**:上传文件限制为 1MB + +### 计划功能 + +- 🚧 远程控制台(后续开发) +- 🚧 改进的多客户端支持 + +## ⚙️ API 接口 + +### WebSocket 消息类型 + +- `join_room` - 加入房间 +- `file_operation` - 文件操作请求 +- `file_operation_response` - 文件操作响应 +- `ping/pong` - 心跳检测 + +### 文件操作类型 + +- `fetch_files` - 获取文件列表 +- `create_or_save_file` - 创建/保存文件 +- `new_file` - 创建新文件 +- `new_folder` - 创建新文件夹 +- `rename` - 重命名文件/文件夹 +- `delete_file` - 删除文件/文件夹 + +## 🎯 使用流程 + +1. **访问编辑器**:打开服务器地址,自动创建房间 +2. **复制命令**:点击编辑器主页的 CC:Tweaked 命令文本,复制到剪贴板 +3. **CC 端连接**:在游戏中粘贴并运行命令 +4. **刷新列表**:在编辑器中刷新文件列表 +5. **开始编辑**:浏览和编辑 CC 计算机中的文件 + +## 🔒 注意事项 + +1. **权限要求**:服务器需要绑定 80 端口 +2. **网络访问**:确保 CC:Tweaked 计算机可以访问你的服务器 +3. **文件安全**:操作会直接影响游戏内计算机的文件系统 + +## 🐛 常见问题 + +**Q: 无法访问编辑器页面** +A: 检查服务器是否正常启动,80 端口是否被占用 + +**Q: CC 端连接失败** +A: 检查网络连通性,确保游戏内计算机可以访问服务器 + +**Q: 文件列表为空** +A: 确保 CC 客户端已成功连接,然后刷新文件列表 + +**Q: 文件上传失败** +A: 检查文件大小是否超过 1MB 限制 + +## 📄 技术说明 + +- **后端**:Python + WebSocket +- **前端**:Vue 3 + TypeScript + Monaco Editor +- **通信**:WebSocket 实时双向通信 +- **客户端**:CC:Tweaked Lua 脚本 + +## 🤝 开发说明 + +该项目目前主要支持远程代码编辑功能,远程控制台功能计划在后续版本中开发。 + +--- + +**注意**: 本项目主要用于 CC:Tweaked 的远程开发调试,请确保遵守游戏和模组的使用条款。