feat(remote): 文件传输改用Electron IPC通道
- 主进程新增4个IPC handler处理远程文件操作 - 前端通过IPC调用而非浏览器fetch访问远程API - Remote服务新增3003端口专门处理文件传输 - 上传使用文件路径方案,下载使用保存对话框方案
This commit is contained in:
@@ -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'
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user