@opensumi/ide-terminal-next 3.1.5-next-1720152351.0 → 3.1.5-next-1720156680.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,24 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { SocketConnectOpts } from 'net';
|
|
3
3
|
import { PtyServiceManager } from './pty.manager';
|
|
4
|
-
interface PtyServiceOptions {
|
|
5
|
-
socketConnectOpts: SocketConnectOpts;
|
|
6
|
-
/**
|
|
7
|
-
* 重连时间间隔
|
|
8
|
-
*/
|
|
9
|
-
reconnectInterval?: number;
|
|
10
|
-
/**
|
|
11
|
-
* socket 超时时间
|
|
12
|
-
*/
|
|
13
|
-
socketTimeout?: number | undefined;
|
|
14
|
-
}
|
|
15
|
-
export declare const PtyServiceManagerRemoteOptions: unique symbol;
|
|
16
4
|
export declare class PtyServiceManagerRemote extends PtyServiceManager {
|
|
17
|
-
|
|
18
|
-
constructor(opts?: PtyServiceOptions);
|
|
5
|
+
constructor(connectOpts?: SocketConnectOpts);
|
|
19
6
|
private initRPCService;
|
|
20
7
|
private initRemoteConnectionMode;
|
|
21
8
|
initLocal(): void;
|
|
22
9
|
}
|
|
23
|
-
export {};
|
|
24
10
|
//# sourceMappingURL=pty.manager.remote.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.manager.remote.d.ts","sourceRoot":"","sources":["../../src/node/pty.manager.remote.ts"],"names":[],"mappings":";AAAA,OAAY,EAAE,iBAAiB,EAAE,MAAM,KAAK,CAAC;AAc7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"pty.manager.remote.d.ts","sourceRoot":"","sources":["../../src/node/pty.manager.remote.ts"],"names":[],"mappings":";AAAA,OAAY,EAAE,iBAAiB,EAAE,MAAM,KAAK,CAAC;AAc7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAKlD,qBACa,uBAAwB,SAAQ,iBAAiB;gBAEpC,WAAW,GAAE,iBAA2D;IAKhG,OAAO,CAAC,cAAc;IAoCtB,OAAO,CAAC,wBAAwB;IAiCvB,SAAS;CAGnB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PtyServiceManagerRemote =
|
|
3
|
+
exports.PtyServiceManagerRemote = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const net_1 = tslib_1.__importDefault(require("net"));
|
|
6
6
|
const di_1 = require("@opensumi/di");
|
|
@@ -9,15 +9,14 @@ const connection_1 = require("@opensumi/ide-connection/lib/common/rpc/connection
|
|
|
9
9
|
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
10
10
|
const common_1 = require("../common");
|
|
11
11
|
const pty_manager_1 = require("./pty.manager");
|
|
12
|
-
exports.PtyServiceManagerRemoteOptions = Symbol('PtyServiceManagerRemoteOptions');
|
|
13
12
|
// 双容器架构 - 在IDE容器中远程运行,与DEV Server上的PtyService通信
|
|
14
13
|
// 继承自PtyServiceManager,覆写了创建PtyProxyService连接的方法,用于需要远程连接PtyService的场景
|
|
15
14
|
// 具体需要根据应用场景,通过DI注入覆盖PtyServiceManager使用
|
|
16
15
|
let PtyServiceManagerRemote = class PtyServiceManagerRemote extends pty_manager_1.PtyServiceManager {
|
|
17
16
|
// Pty运行在单独的容器上,通过Socket连接,可以自定义Socket连接参数
|
|
18
|
-
constructor(
|
|
17
|
+
constructor(connectOpts = { port: common_1.PTY_SERVICE_PROXY_SERVER_PORT }) {
|
|
19
18
|
super();
|
|
20
|
-
this.initRemoteConnectionMode(
|
|
19
|
+
this.initRemoteConnectionMode(connectOpts);
|
|
21
20
|
}
|
|
22
21
|
initRPCService(socket) {
|
|
23
22
|
const clientCenter = new ide_connection_1.RPCServiceCenter();
|
|
@@ -53,62 +52,33 @@ let PtyServiceManagerRemote = class PtyServiceManagerRemote extends pty_manager_
|
|
|
53
52
|
remove.dispose();
|
|
54
53
|
});
|
|
55
54
|
}
|
|
56
|
-
initRemoteConnectionMode(
|
|
57
|
-
const { socketTimeout, reconnectInterval, socketConnectOpts } = opts;
|
|
58
|
-
if (this.disposer) {
|
|
59
|
-
this.disposer.dispose();
|
|
60
|
-
}
|
|
61
|
-
this.disposer = new ide_core_common_1.Disposable();
|
|
55
|
+
initRemoteConnectionMode(connectOpts) {
|
|
62
56
|
const socket = new net_1.default.Socket();
|
|
63
|
-
|
|
64
|
-
socket.setTimeout(socketTimeout);
|
|
65
|
-
}
|
|
66
|
-
let reconnectTimer = null;
|
|
67
|
-
const reconnect = () => {
|
|
68
|
-
if (reconnectTimer) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
reconnectTimer = global.setTimeout(() => {
|
|
72
|
-
this.logger.log('PtyServiceManagerRemote reconnect');
|
|
73
|
-
socket.destroy();
|
|
74
|
-
this.initRemoteConnectionMode(opts);
|
|
75
|
-
}, reconnectInterval || 2000);
|
|
76
|
-
};
|
|
57
|
+
let rpcServiceDisposable;
|
|
77
58
|
// UNIX Socket 连接监听,成功连接后再创建RPC服务
|
|
78
|
-
socket.
|
|
59
|
+
socket.on('connect', () => {
|
|
79
60
|
this.logger.log('PtyServiceManagerRemote connected');
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
if (reconnectTimer) {
|
|
84
|
-
global.clearTimeout(reconnectTimer);
|
|
85
|
-
reconnectTimer = null;
|
|
86
|
-
}
|
|
87
|
-
this.disposer.addDispose(this.initRPCService(socket));
|
|
61
|
+
rpcServiceDisposable === null || rpcServiceDisposable === void 0 ? void 0 : rpcServiceDisposable.dispose();
|
|
62
|
+
rpcServiceDisposable = this.initRPCService(socket);
|
|
88
63
|
});
|
|
89
64
|
// UNIX Socket 连接失败或者断开,此时需要等待 1.5s 后重新连接
|
|
90
|
-
socket.on('close', (
|
|
91
|
-
this.logger.log('PtyServiceManagerRemote
|
|
92
|
-
|
|
65
|
+
socket.on('close', () => {
|
|
66
|
+
this.logger.log('PtyServiceManagerRemote connect failed, will reconnect after 2s');
|
|
67
|
+
rpcServiceDisposable === null || rpcServiceDisposable === void 0 ? void 0 : rpcServiceDisposable.dispose();
|
|
68
|
+
global.setTimeout(() => {
|
|
69
|
+
this.initRemoteConnectionMode(connectOpts);
|
|
70
|
+
}, 2000);
|
|
93
71
|
});
|
|
94
72
|
// 处理 Socket 异常
|
|
95
73
|
socket.on('error', (e) => {
|
|
96
|
-
this.logger.warn('
|
|
97
|
-
});
|
|
98
|
-
socket.on('end', () => {
|
|
99
|
-
this.logger.log('PtyServiceManagerRemote socket end');
|
|
100
|
-
});
|
|
101
|
-
socket.on('timeout', () => {
|
|
102
|
-
this.logger.log('PtyServiceManagerRemote socket timeout');
|
|
103
|
-
reconnect();
|
|
74
|
+
this.logger.warn('pty unix domain socket error ', e);
|
|
104
75
|
});
|
|
105
76
|
try {
|
|
106
|
-
|
|
107
|
-
socket.connect(socketConnectOpts);
|
|
77
|
+
socket.connect(connectOpts);
|
|
108
78
|
}
|
|
109
79
|
catch (e) {
|
|
110
80
|
// 连接错误的时候会抛出异常,此时自动重连,同时需要 catch 错误
|
|
111
|
-
this.logger.warn(
|
|
81
|
+
this.logger.warn(e);
|
|
112
82
|
}
|
|
113
83
|
}
|
|
114
84
|
initLocal() {
|
|
@@ -117,7 +87,7 @@ let PtyServiceManagerRemote = class PtyServiceManagerRemote extends pty_manager_
|
|
|
117
87
|
};
|
|
118
88
|
PtyServiceManagerRemote = tslib_1.__decorate([
|
|
119
89
|
(0, di_1.Injectable)(),
|
|
120
|
-
tslib_1.__param(0, (0, di_1.Optional)(
|
|
90
|
+
tslib_1.__param(0, (0, di_1.Optional)()),
|
|
121
91
|
tslib_1.__metadata("design:paramtypes", [Object])
|
|
122
92
|
], PtyServiceManagerRemote);
|
|
123
93
|
exports.PtyServiceManagerRemote = PtyServiceManagerRemote;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.manager.remote.js","sourceRoot":"","sources":["../../src/node/pty.manager.remote.ts"],"names":[],"mappings":";;;;AAAA,sDAA6C;AAE7C,qCAAoD;AACpD,6DAA4E;AAC5E,mFAAoF;AACpF,+
|
|
1
|
+
{"version":3,"file":"pty.manager.remote.js","sourceRoot":"","sources":["../../src/node/pty.manager.remote.ts"],"names":[],"mappings":";;;;AAAA,sDAA6C;AAE7C,qCAAoD;AACpD,6DAA4E;AAC5E,mFAAoF;AACpF,+DAAoE;AAEpE,sCAKmB;AAEnB,+CAAkD;AAElD,gDAAgD;AAChD,uEAAuE;AACvE,yCAAyC;AAElC,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,+BAAiB;IAC5D,0CAA0C;IAC1C,YAAwB,cAAiC,EAAE,IAAI,EAAE,sCAA6B,EAAE;QAC9F,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;IAEO,cAAc,CAAC,MAAkB;QACvC,MAAM,YAAY,GAAG,IAAI,iCAAgB,EAAE,CAAC;QAC5C,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,GAAG,IAAA,+BAAc,EAAC,YAAY,CAAC,CAAC;QAC9F,MAAM,UAAU,GAAwB,mBAAmB,CAAC,mCAA0B,CAAQ,CAAC;QAC/F,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QAClC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,OAAO;QACP,gBAAgB,CAAC,4CAAmC,EAAE;YACpD,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE;gBACnC,IAAI,gBAAgB,EAAE;oBACpB,qCAAqC;oBACrC,8DAA8D;oBAC9D,OAAO;iBACR;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,CAAC,QAAQ,EAAE;oBACb,oDAAoD;oBACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,MAAM,CAAC,CAAC;iBACnE;qBAAM;oBACL,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;iBACnB;YACH,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,2BAAc,CAAC,YAAY,CAAC,MAAM,EAAE;YACrD,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC1D,OAAO,4BAAU,CAAC,MAAM,CAAC,GAAG,EAAE;YAC5B,gBAAgB,GAAG,IAAI,CAAC;YACxB,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,wBAAwB,CAAC,WAA8B;QAC7D,MAAM,MAAM,GAAG,IAAI,aAAG,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,oBAA6C,CAAC;QAElD,iCAAiC;QACjC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YACrD,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,OAAO,EAAE,CAAC;YAChC,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;YACnF,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBACrB,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;YAC7C,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,IAAI;YACF,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SAC7B;QAAC,OAAO,CAAC,EAAE;YACV,oCAAoC;YACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACrB;IACH,CAAC;IAEQ,SAAS;QAChB,iDAAiD;IACnD,CAAC;CACF,CAAA;AA/EY,uBAAuB;IADnC,IAAA,eAAU,GAAE;IAGE,mBAAA,IAAA,aAAQ,GAAE,CAAA;;GAFZ,uBAAuB,CA+EnC;AA/EY,0DAAuB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-terminal-next",
|
|
3
|
-
"version": "3.1.5-next-
|
|
3
|
+
"version": "3.1.5-next-1720156680.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src"
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"url": "git@github.com:opensumi/core.git"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@opensumi/ide-connection": "3.1.5-next-
|
|
21
|
-
"@opensumi/ide-core-common": "3.1.5-next-
|
|
22
|
-
"@opensumi/ide-core-node": "3.1.5-next-
|
|
23
|
-
"@opensumi/ide-file-service": "3.1.5-next-
|
|
20
|
+
"@opensumi/ide-connection": "3.1.5-next-1720156680.0",
|
|
21
|
+
"@opensumi/ide-core-common": "3.1.5-next-1720156680.0",
|
|
22
|
+
"@opensumi/ide-core-node": "3.1.5-next-1720156680.0",
|
|
23
|
+
"@opensumi/ide-file-service": "3.1.5-next-1720156680.0",
|
|
24
24
|
"node-pty": "1.0.0",
|
|
25
25
|
"os-locale": "^4.0.0",
|
|
26
26
|
"xterm": "5.3.0",
|
|
@@ -30,18 +30,18 @@
|
|
|
30
30
|
"xterm-addon-webgl": "0.15.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@opensumi/ide-components": "3.1.5-next-
|
|
34
|
-
"@opensumi/ide-core-browser": "3.1.5-next-
|
|
35
|
-
"@opensumi/ide-dev-tool": "3.1.5-next-
|
|
36
|
-
"@opensumi/ide-editor": "3.1.5-next-
|
|
37
|
-
"@opensumi/ide-main-layout": "3.1.5-next-
|
|
38
|
-
"@opensumi/ide-overlay": "3.1.5-next-
|
|
39
|
-
"@opensumi/ide-status-bar": "3.1.5-next-
|
|
40
|
-
"@opensumi/ide-theme": "3.1.5-next-
|
|
41
|
-
"@opensumi/ide-variable": "3.1.5-next-
|
|
42
|
-
"@opensumi/ide-workspace": "3.1.5-next-
|
|
33
|
+
"@opensumi/ide-components": "3.1.5-next-1720156680.0",
|
|
34
|
+
"@opensumi/ide-core-browser": "3.1.5-next-1720156680.0",
|
|
35
|
+
"@opensumi/ide-dev-tool": "3.1.5-next-1720156680.0",
|
|
36
|
+
"@opensumi/ide-editor": "3.1.5-next-1720156680.0",
|
|
37
|
+
"@opensumi/ide-main-layout": "3.1.5-next-1720156680.0",
|
|
38
|
+
"@opensumi/ide-overlay": "3.1.5-next-1720156680.0",
|
|
39
|
+
"@opensumi/ide-status-bar": "3.1.5-next-1720156680.0",
|
|
40
|
+
"@opensumi/ide-theme": "3.1.5-next-1720156680.0",
|
|
41
|
+
"@opensumi/ide-variable": "3.1.5-next-1720156680.0",
|
|
42
|
+
"@opensumi/ide-workspace": "3.1.5-next-1720156680.0",
|
|
43
43
|
"@types/http-proxy": "^1.17.2",
|
|
44
44
|
"http-proxy": "^1.18.0"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "80991f98ad380086aeaafa008b1bbca3e2e3e40a"
|
|
47
47
|
}
|
|
@@ -3,7 +3,7 @@ import net, { SocketConnectOpts } from 'net';
|
|
|
3
3
|
import { Injectable, Optional } from '@opensumi/di';
|
|
4
4
|
import { RPCServiceCenter, initRPCService } from '@opensumi/ide-connection';
|
|
5
5
|
import { SumiConnection } from '@opensumi/ide-connection/lib/common/rpc/connection';
|
|
6
|
-
import {
|
|
6
|
+
import { Disposable, IDisposable } from '@opensumi/ide-core-common';
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
9
|
IPtyProxyRPCService,
|
|
@@ -14,34 +14,15 @@ import {
|
|
|
14
14
|
|
|
15
15
|
import { PtyServiceManager } from './pty.manager';
|
|
16
16
|
|
|
17
|
-
interface PtyServiceOptions {
|
|
18
|
-
socketConnectOpts: SocketConnectOpts;
|
|
19
|
-
/**
|
|
20
|
-
* 重连时间间隔
|
|
21
|
-
*/
|
|
22
|
-
reconnectInterval?: number;
|
|
23
|
-
/**
|
|
24
|
-
* socket 超时时间
|
|
25
|
-
*/
|
|
26
|
-
socketTimeout?: number | undefined;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export const PtyServiceManagerRemoteOptions = Symbol('PtyServiceManagerRemoteOptions');
|
|
30
|
-
|
|
31
17
|
// 双容器架构 - 在IDE容器中远程运行,与DEV Server上的PtyService通信
|
|
32
18
|
// 继承自PtyServiceManager,覆写了创建PtyProxyService连接的方法,用于需要远程连接PtyService的场景
|
|
33
19
|
// 具体需要根据应用场景,通过DI注入覆盖PtyServiceManager使用
|
|
34
20
|
@Injectable()
|
|
35
21
|
export class PtyServiceManagerRemote extends PtyServiceManager {
|
|
36
|
-
private disposer: Disposable;
|
|
37
|
-
|
|
38
22
|
// Pty运行在单独的容器上,通过Socket连接,可以自定义Socket连接参数
|
|
39
|
-
constructor(
|
|
40
|
-
@Optional(PtyServiceManagerRemoteOptions)
|
|
41
|
-
opts: PtyServiceOptions = { socketConnectOpts: { port: PTY_SERVICE_PROXY_SERVER_PORT } },
|
|
42
|
-
) {
|
|
23
|
+
constructor(@Optional() connectOpts: SocketConnectOpts = { port: PTY_SERVICE_PROXY_SERVER_PORT }) {
|
|
43
24
|
super();
|
|
44
|
-
this.initRemoteConnectionMode(
|
|
25
|
+
this.initRemoteConnectionMode(connectOpts);
|
|
45
26
|
}
|
|
46
27
|
|
|
47
28
|
private initRPCService(socket: net.Socket): IDisposable {
|
|
@@ -80,69 +61,36 @@ export class PtyServiceManagerRemote extends PtyServiceManager {
|
|
|
80
61
|
});
|
|
81
62
|
}
|
|
82
63
|
|
|
83
|
-
private initRemoteConnectionMode(
|
|
84
|
-
const { socketTimeout, reconnectInterval, socketConnectOpts } = opts;
|
|
85
|
-
if (this.disposer) {
|
|
86
|
-
this.disposer.dispose();
|
|
87
|
-
}
|
|
88
|
-
this.disposer = new Disposable();
|
|
89
|
-
|
|
64
|
+
private initRemoteConnectionMode(connectOpts: SocketConnectOpts) {
|
|
90
65
|
const socket = new net.Socket();
|
|
91
|
-
|
|
92
|
-
socket.setTimeout(socketTimeout);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
let reconnectTimer: NodeJS.Timeout | null = null;
|
|
96
|
-
const reconnect = () => {
|
|
97
|
-
if (reconnectTimer) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
reconnectTimer = global.setTimeout(() => {
|
|
101
|
-
this.logger.log('PtyServiceManagerRemote reconnect');
|
|
102
|
-
socket.destroy();
|
|
103
|
-
this.initRemoteConnectionMode(opts);
|
|
104
|
-
}, reconnectInterval || 2000);
|
|
105
|
-
};
|
|
66
|
+
let rpcServiceDisposable: IDisposable | undefined;
|
|
106
67
|
|
|
107
68
|
// UNIX Socket 连接监听,成功连接后再创建RPC服务
|
|
108
|
-
socket.
|
|
69
|
+
socket.on('connect', () => {
|
|
109
70
|
this.logger.log('PtyServiceManagerRemote connected');
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
if (reconnectTimer) {
|
|
114
|
-
global.clearTimeout(reconnectTimer);
|
|
115
|
-
reconnectTimer = null;
|
|
116
|
-
}
|
|
117
|
-
this.disposer.addDispose(this.initRPCService(socket));
|
|
71
|
+
rpcServiceDisposable?.dispose();
|
|
72
|
+
rpcServiceDisposable = this.initRPCService(socket);
|
|
118
73
|
});
|
|
119
74
|
|
|
120
75
|
// UNIX Socket 连接失败或者断开,此时需要等待 1.5s 后重新连接
|
|
121
|
-
socket.on('close', (
|
|
122
|
-
this.logger.log('PtyServiceManagerRemote
|
|
123
|
-
|
|
76
|
+
socket.on('close', () => {
|
|
77
|
+
this.logger.log('PtyServiceManagerRemote connect failed, will reconnect after 2s');
|
|
78
|
+
rpcServiceDisposable?.dispose();
|
|
79
|
+
global.setTimeout(() => {
|
|
80
|
+
this.initRemoteConnectionMode(connectOpts);
|
|
81
|
+
}, 2000);
|
|
124
82
|
});
|
|
125
83
|
|
|
126
84
|
// 处理 Socket 异常
|
|
127
85
|
socket.on('error', (e) => {
|
|
128
|
-
this.logger.warn('
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
socket.on('end', () => {
|
|
132
|
-
this.logger.log('PtyServiceManagerRemote socket end');
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
socket.on('timeout', () => {
|
|
136
|
-
this.logger.log('PtyServiceManagerRemote socket timeout');
|
|
137
|
-
reconnect();
|
|
86
|
+
this.logger.warn('pty unix domain socket error ', e);
|
|
138
87
|
});
|
|
139
88
|
|
|
140
89
|
try {
|
|
141
|
-
|
|
142
|
-
socket.connect(socketConnectOpts);
|
|
90
|
+
socket.connect(connectOpts);
|
|
143
91
|
} catch (e) {
|
|
144
92
|
// 连接错误的时候会抛出异常,此时自动重连,同时需要 catch 错误
|
|
145
|
-
this.logger.warn(
|
|
93
|
+
this.logger.warn(e);
|
|
146
94
|
}
|
|
147
95
|
}
|
|
148
96
|
|