Skip to content

Commit f2df2d4

Browse files
committed
🐛 修复vscode正常断开后不重新连接的问题 #176
1 parent b0e9abe commit f2df2d4

1 file changed

Lines changed: 37 additions & 34 deletions

File tree

src/app/service/system/manager.ts

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { SystemConfig } from "@App/pkg/config/config";
77
import { prepareScriptByCode } from "@App/pkg/utils/script";
88
import Manager from "../manager";
99
import ScriptManager from "../script/manager";
10+
import Logger from "@App/app/logger/logger";
1011

1112
// value管理器,负责value等更新获取等操作
1213
@IoC.Singleton(MessageHander, SystemConfig)
@@ -125,42 +126,44 @@ export class SystemManager extends Manager {
125126
}
126127

127128
connectVSCode() {
128-
return new Promise<void>((resolve, reject) => {
129-
// 与vsc扩展建立连接
130-
if (this.wsVscode) {
131-
this.wsVscode.close();
132-
}
133-
try {
134-
this.wsVscode = new WebSocket(this.systemConfig.vscodeUrl);
135-
} catch (e: any) {
136-
reject(e);
137-
return;
138-
}
139-
this.wsVscode.addEventListener("open", () => {
140-
this.wsVscode!.send('{"action":"hello"}');
141-
resolve();
142-
});
143-
this.wsVscode.addEventListener("message", async (ev) => {
144-
const data = JSON.parse(ev.data);
145-
switch (data.action) {
146-
case "onchange": {
147-
const code = data.data.script;
148-
const script = await prepareScriptByCode(
149-
code,
150-
"",
151-
uuidv5(data.data.uri, uuidv5.URL)
152-
);
153-
this.scriptManager.event.upsertHandler(script, "vscode");
154-
break;
155-
}
156-
default:
129+
// 与vsc扩展建立连接
130+
if (this.wsVscode) {
131+
this.wsVscode.close();
132+
}
133+
try {
134+
this.wsVscode = new WebSocket(this.systemConfig.vscodeUrl);
135+
} catch (e: any) {
136+
this.logger.debug("vscode连接失败", Logger.E(e));
137+
return;
138+
}
139+
this.wsVscode.addEventListener("open", () => {
140+
this.wsVscode!.send('{"action":"hello"}');
141+
});
142+
this.wsVscode.addEventListener("message", async (ev) => {
143+
const data = JSON.parse(ev.data);
144+
switch (data.action) {
145+
case "onchange": {
146+
const code = data.data.script;
147+
const script = await prepareScriptByCode(
148+
code,
149+
"",
150+
uuidv5(data.data.uri, uuidv5.URL)
151+
);
152+
this.scriptManager.event.upsertHandler(script, "vscode");
153+
break;
157154
}
158-
});
155+
default:
156+
}
157+
});
159158

160-
this.wsVscode.addEventListener("error", () => {
161-
reject(new Error("VSCode连接失败"));
162-
this.wsVscode = undefined;
163-
});
159+
this.wsVscode.addEventListener("error", (e) => {
160+
this.wsVscode = undefined;
161+
this.logger.debug("vscode连接失败", Logger.E(e));
162+
});
163+
164+
this.wsVscode.addEventListener("close", () => {
165+
this.wsVscode = undefined;
166+
this.logger.debug("vscode连接关闭");
164167
});
165168
}
166169

0 commit comments

Comments
 (0)