feat(remote): 文件传输改用Electron IPC通道

- 主进程新增4个IPC handler处理远程文件操作
- 前端通过IPC调用而非浏览器fetch访问远程API
- Remote服务新增3003端口专门处理文件传输
- 上传使用文件路径方案,下载使用保存对话框方案
This commit is contained in:
2026-03-10 00:34:02 +08:00
parent 788757b785
commit 6d5520dfa5
7 changed files with 221 additions and 98 deletions

View File

@@ -145,6 +145,7 @@ class App {
const serverConfig = config.getSection('server') || {};
return new Server({
port: serverConfig.port || 3000,
fileTransferPort: serverConfig.fileTransferPort || 3003,
host: serverConfig.host || '0.0.0.0'
});
});

View File

@@ -5,9 +5,11 @@ const path = require('path');
class Server {
constructor(config = {}) {
this.port = config.port || 3000;
this.fileTransferPort = config.fileTransferPort || 3003;
this.host = config.host || '0.0.0.0';
this.app = express();
this.server = http.createServer(this.app);
this.fileTransferServer = null;
}
use(...args) {
@@ -28,20 +30,33 @@ class Server {
start() {
return new Promise((resolve, reject) => {
this.server.listen({ port: this.port, host: this.host }, () => {
resolve(this.getAddress());
console.log(`Server started on port ${this.port}`);
});
this.server.on('error', reject);
this.fileTransferServer = http.createServer(this.app);
this.fileTransferServer.listen({ port: this.fileTransferPort, host: this.host }, () => {
console.log(`File transfer server started on port ${this.fileTransferPort}`);
});
resolve(this.getAddress());
});
}
stop() {
return new Promise((resolve, reject) => {
this.server.close((err) => {
if (err) {
reject(err);
} else {
resolve();
}
const closeFileTransfer = this.fileTransferServer
? new Promise((res) => this.fileTransferServer.close(res))
: Promise.resolve();
closeFileTransfer.then(() => {
this.server.close((err) => {
if (err) {
reject(err);
} else {
resolve();
}
});
});
});
}