@opensumi/ide-connection 3.0.2-next-1715826860.0 → 3.0.2-next-1715852509.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.
- package/lib/browser/ws-channel-handler.d.ts +0 -6
- package/lib/browser/ws-channel-handler.d.ts.map +1 -1
- package/lib/browser/ws-channel-handler.js +9 -68
- package/lib/browser/ws-channel-handler.js.map +1 -1
- package/lib/common/connection/drivers/reconnecting-websocket.d.ts +1 -1
- package/lib/common/connection/drivers/reconnecting-websocket.d.ts.map +1 -1
- package/lib/common/connection/drivers/reconnecting-websocket.js +1 -1
- package/lib/common/connection/drivers/reconnecting-websocket.js.map +1 -1
- package/lib/common/fury-extends/one-of.d.ts +1 -2
- package/lib/common/fury-extends/one-of.d.ts.map +1 -1
- package/lib/common/fury-extends/one-of.js +5 -12
- package/lib/common/fury-extends/one-of.js.map +1 -1
- package/lib/common/rpc/connection.d.ts.map +1 -1
- package/lib/common/rpc/connection.js +6 -3
- package/lib/common/rpc/connection.js.map +1 -1
- package/lib/common/server-handler.d.ts +4 -4
- package/lib/common/server-handler.d.ts.map +1 -1
- package/lib/common/server-handler.js +12 -25
- package/lib/common/server-handler.js.map +1 -1
- package/lib/common/ws-channel.d.ts +23 -77
- package/lib/common/ws-channel.d.ts.map +1 -1
- package/lib/common/ws-channel.js +4 -77
- package/lib/common/ws-channel.js.map +1 -1
- package/lib/node/ws.d.ts.map +1 -1
- package/lib/node/ws.js +0 -1
- package/lib/node/ws.js.map +1 -1
- package/package.json +6 -6
- package/src/browser/ws-channel-handler.ts +10 -74
- package/src/common/connection/drivers/reconnecting-websocket.ts +3 -5
- package/src/common/fury-extends/one-of.ts +3 -12
- package/src/common/rpc/connection.ts +149 -148
- package/src/common/server-handler.ts +18 -41
- package/src/common/ws-channel.ts +35 -143
- package/src/node/ws.ts +0 -1
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { EventEmitter } from '@opensumi/events';
|
|
3
|
-
import { DisposableStore, EventQueue
|
|
2
|
+
import { DisposableStore, EventQueue } from '@opensumi/ide-core-common';
|
|
4
3
|
import { IConnectionShape } from './connection/types';
|
|
5
4
|
import { ISumiConnectionOptions, SumiConnection } from './rpc/connection';
|
|
6
5
|
import { ILogger } from './types';
|
|
@@ -20,6 +19,25 @@ export interface PongMessage {
|
|
|
20
19
|
id: string;
|
|
21
20
|
clientId: string;
|
|
22
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* `open` message is used to open a new channel.
|
|
24
|
+
* `path` is used to identify which handler should be used to handle the channel.
|
|
25
|
+
* `clientId` is used to identify the client.
|
|
26
|
+
*/
|
|
27
|
+
export interface OpenMessage {
|
|
28
|
+
kind: 'open';
|
|
29
|
+
id: string;
|
|
30
|
+
path: string;
|
|
31
|
+
clientId: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* when server receive a `open` message, it should reply a `server-ready` message.
|
|
35
|
+
* this is indicate that the channel is ready to use.
|
|
36
|
+
*/
|
|
37
|
+
export interface ServerReadyMessage {
|
|
38
|
+
kind: 'server-ready';
|
|
39
|
+
id: string;
|
|
40
|
+
}
|
|
23
41
|
/**
|
|
24
42
|
* `data` message indicate that the channel has received some data.
|
|
25
43
|
* the `content` field is the data, it should be a string.
|
|
@@ -40,6 +58,7 @@ export interface CloseMessage {
|
|
|
40
58
|
code: number;
|
|
41
59
|
reason: string;
|
|
42
60
|
}
|
|
61
|
+
export type ChannelMessage = PingMessage | PongMessage | OpenMessage | ServerReadyMessage | DataMessage | BinaryMessage | CloseMessage;
|
|
43
62
|
export interface IWSChannelCreateOptions {
|
|
44
63
|
/**
|
|
45
64
|
* every channel's unique id, it only used in client to server architecture.
|
|
@@ -74,19 +93,9 @@ export declare class WSChannel {
|
|
|
74
93
|
onOpen(cb: (id: string) => void): import("@opensumi/events").IDisposable;
|
|
75
94
|
onReopen(cb: () => void): import("@opensumi/events").IDisposable;
|
|
76
95
|
pause(): void;
|
|
77
|
-
onServerReady(cb: () => void): import("@opensumi/events").IDisposable | undefined;
|
|
78
96
|
resume(): void;
|
|
79
97
|
dispatch(msg: ChannelMessage): void;
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* @param connectionToken 一个 connection token 用于在全链路中追踪一个 channel 的生命周期,防止 channel 被重复打开
|
|
83
|
-
*/
|
|
84
|
-
open(path: string, clientId: string, connectionToken?: string): string | undefined;
|
|
85
|
-
protected timer: NodeJS.Timeout;
|
|
86
|
-
/**
|
|
87
|
-
* 启动定时器,确保 server-ready 消息在一定时间内到达
|
|
88
|
-
*/
|
|
89
|
-
protected ensureOpenSend(path: string, clientId: string, connectionToken: string): void;
|
|
98
|
+
open(path: string, clientId: string): void;
|
|
90
99
|
send(content: string): void;
|
|
91
100
|
sendBinary(data: Uint8Array): void;
|
|
92
101
|
onError(): void;
|
|
@@ -103,21 +112,12 @@ export declare class WSChannel {
|
|
|
103
112
|
createSumiConnection(options?: ISumiConnectionOptions): SumiConnection;
|
|
104
113
|
dispose(): void;
|
|
105
114
|
}
|
|
106
|
-
interface IWSServerChannelCreateOptions extends IWSChannelCreateOptions {
|
|
107
|
-
clientId: string;
|
|
108
|
-
}
|
|
109
115
|
/**
|
|
110
116
|
* The server side channel, it will send a `server-ready` message after it receive a `open` message.
|
|
111
117
|
*/
|
|
112
118
|
export declare class WSServerChannel extends WSChannel {
|
|
113
|
-
|
|
114
|
-
messageQueue: ChannelMessage[];
|
|
115
|
-
clientId: string;
|
|
116
|
-
constructor(connection: IConnectionShape<Uint8Array>, options: IWSServerChannelCreateOptions);
|
|
117
|
-
serverReady(token: string): void;
|
|
118
|
-
dispatch(msg: ChannelMessage): void;
|
|
119
|
+
serverReady(): void;
|
|
119
120
|
}
|
|
120
|
-
export type ChannelMessage = PingMessage | PongMessage | OpenMessage | ServerReadyMessage | DataMessage | BinaryMessage | CloseMessage | ErrorMessage;
|
|
121
121
|
export declare const PingProtocol: {
|
|
122
122
|
type: import("@furyjs/fury").InternalSerializerType.FURY_TYPE_TAG;
|
|
123
123
|
options: {
|
|
@@ -146,18 +146,6 @@ export declare const PongProtocol: {
|
|
|
146
146
|
} | undefined;
|
|
147
147
|
};
|
|
148
148
|
};
|
|
149
|
-
/**
|
|
150
|
-
* `open` message is used to open a new channel.
|
|
151
|
-
* `path` is used to identify which handler should be used to handle the channel.
|
|
152
|
-
* `clientId` is used to identify the client.
|
|
153
|
-
*/
|
|
154
|
-
export interface OpenMessage {
|
|
155
|
-
kind: 'open';
|
|
156
|
-
id: string;
|
|
157
|
-
path: string;
|
|
158
|
-
clientId: string;
|
|
159
|
-
connectionToken: string;
|
|
160
|
-
}
|
|
161
149
|
export declare const OpenProtocol: {
|
|
162
150
|
type: import("@furyjs/fury").InternalSerializerType.FURY_TYPE_TAG;
|
|
163
151
|
options: {
|
|
@@ -172,21 +160,9 @@ export declare const OpenProtocol: {
|
|
|
172
160
|
path: {
|
|
173
161
|
type: import("@furyjs/fury").InternalSerializerType.STRING;
|
|
174
162
|
};
|
|
175
|
-
connectionToken: {
|
|
176
|
-
type: import("@furyjs/fury").InternalSerializerType.STRING;
|
|
177
|
-
};
|
|
178
163
|
} | undefined;
|
|
179
164
|
};
|
|
180
165
|
};
|
|
181
|
-
/**
|
|
182
|
-
* when server receive a `open` message, it should reply a `server-ready` message.
|
|
183
|
-
* this is indicate that the channel is ready to use.
|
|
184
|
-
*/
|
|
185
|
-
export interface ServerReadyMessage {
|
|
186
|
-
kind: 'server-ready';
|
|
187
|
-
id: string;
|
|
188
|
-
token: string;
|
|
189
|
-
}
|
|
190
166
|
export declare const ServerReadyProtocol: {
|
|
191
167
|
type: import("@furyjs/fury").InternalSerializerType.FURY_TYPE_TAG;
|
|
192
168
|
options: {
|
|
@@ -195,35 +171,6 @@ export declare const ServerReadyProtocol: {
|
|
|
195
171
|
id: {
|
|
196
172
|
type: import("@furyjs/fury").InternalSerializerType.STRING;
|
|
197
173
|
};
|
|
198
|
-
token: {
|
|
199
|
-
type: import("@furyjs/fury").InternalSerializerType.STRING;
|
|
200
|
-
};
|
|
201
|
-
} | undefined;
|
|
202
|
-
};
|
|
203
|
-
};
|
|
204
|
-
export declare enum ErrorMessageCode {
|
|
205
|
-
ChannelNotFound = 1
|
|
206
|
-
}
|
|
207
|
-
export interface ErrorMessage {
|
|
208
|
-
kind: 'error';
|
|
209
|
-
id: string;
|
|
210
|
-
code: ErrorMessageCode;
|
|
211
|
-
message: string;
|
|
212
|
-
}
|
|
213
|
-
export declare const ErrorProtocol: {
|
|
214
|
-
type: import("@furyjs/fury").InternalSerializerType.FURY_TYPE_TAG;
|
|
215
|
-
options: {
|
|
216
|
-
tag: string;
|
|
217
|
-
props: {
|
|
218
|
-
id: {
|
|
219
|
-
type: import("@furyjs/fury").InternalSerializerType.STRING;
|
|
220
|
-
};
|
|
221
|
-
code: {
|
|
222
|
-
type: import("@furyjs/fury").InternalSerializerType.UINT16;
|
|
223
|
-
};
|
|
224
|
-
message: {
|
|
225
|
-
type: import("@furyjs/fury").InternalSerializerType.STRING;
|
|
226
|
-
};
|
|
227
174
|
} | undefined;
|
|
228
175
|
};
|
|
229
176
|
};
|
|
@@ -276,5 +223,4 @@ export declare function stringify(obj: ChannelMessage): Uint8Array;
|
|
|
276
223
|
export declare function parse(input: Uint8Array): ChannelMessage;
|
|
277
224
|
export declare const pingMessage: Uint8Array;
|
|
278
225
|
export declare const pongMessage: Uint8Array;
|
|
279
|
-
export {};
|
|
280
226
|
//# sourceMappingURL=ws-channel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-channel.d.ts","sourceRoot":"","sources":["../../src/common/ws-channel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ws-channel.d.ts","sourceRoot":"","sources":["../../src/common/ws-channel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAwB,eAAe,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,WAAW,GACX,WAAW,GACX,kBAAkB,GAClB,WAAW,GACX,aAAa,GACb,YAAY,CAAC;AAEjB,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,SAAS;IAyCD,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC;IAxC3D,SAAS,CAAC,YAAY,kBAAyB;IAC/C,SAAS,CAAC,OAAO;iBAEJ,CAAC,IAAI,EAAE,MAAM,CAAC;cACjB,CAAC,EAAE,EAAE,MAAM,CAAC;gBACV,EAAE;eACH,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC;gBAC/B,CAAC,IAAI,EAAE,UAAU,CAAC;OAE5B;IAEF,SAAS,CAAC,aAAa,yBAAuD;IAE9E,SAAS,CAAC,SAAS,EAAE,UAAU,EAAE,CAAM;IACvC,SAAS,CAAC,cAAc,UAAS;IACjC,SAAS,CAAC,kBAAkB,EAAE,OAAO,GAAG,SAAS,CAAC;IAE3C,EAAE,EAAE,MAAM,CAAC;IAEX,WAAW,EAAE,MAAM,CAAC;IAE3B,MAAM,EAAE,OAAO,CAAW;IAE1B,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,uBAAuB;gBAiBxE,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,uBAAuB;IAa7F,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU;IAWlC,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG;IAGnC,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,GAAG;IAGtC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI;IAG/B,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI;IAIvB,KAAK;IAIL,MAAM;IAUN,QAAQ,CAAC,GAAG,EAAE,cAAc;IAe5B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAYnC,IAAI,CAAC,OAAO,EAAE,MAAM;IAUpB,UAAU,CAAC,IAAI,EAAE,UAAU;IAS3B,OAAO;IACP,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAIpC,UAAU;IAGV,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI;IAGlD,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI;IAIpD,gBAAgB;+BAEW,MAAM,UAAU,MAAM,KAAK,IAAI;+BAC/B,UAAU,KAAK,GAAG;qBAC5B,UAAU;;;IAO3B,oBAAoB,CAAC,OAAO,GAAE,sBAA2B;IAKzD,OAAO;CAGR;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,WAAW;CAQZ;AACD,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAGvB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAGvB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;CAIvB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;CAE9B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAGvB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;CAGzB,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;CAIxB,CAAC;AAYH,wBAAgB,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,CAEzD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAEvD;AAcD,eAAO,MAAM,WAAW,YAA0B,CAAC;AACnD,eAAO,MAAM,WAAW,YAA0B,CAAC"}
|
package/lib/common/ws-channel.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.pongMessage = exports.pingMessage = exports.parse = exports.stringify = exports.CloseProtocol = exports.BinaryProtocol = exports.DataProtocol = exports.
|
|
3
|
+
exports.pongMessage = exports.pingMessage = exports.parse = exports.stringify = exports.CloseProtocol = exports.BinaryProtocol = exports.DataProtocol = exports.ServerReadyProtocol = exports.OpenProtocol = exports.PongProtocol = exports.PingProtocol = exports.WSServerChannel = exports.WSChannel = void 0;
|
|
4
4
|
const fury_1 = require("@furyjs/fury");
|
|
5
5
|
const events_1 = require("@opensumi/events");
|
|
6
6
|
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
@@ -26,7 +26,6 @@ class WSChannel {
|
|
|
26
26
|
this.sendQueue = [];
|
|
27
27
|
this._isServerReady = false;
|
|
28
28
|
this.logger = console;
|
|
29
|
-
this.stateTracer = this._disposables.add(new ide_core_common_1.StateTracer());
|
|
30
29
|
const { id, logger, ensureServerReady } = options;
|
|
31
30
|
this.id = id;
|
|
32
31
|
if (logger) {
|
|
@@ -60,13 +59,6 @@ class WSChannel {
|
|
|
60
59
|
pause() {
|
|
61
60
|
this._isServerReady = false;
|
|
62
61
|
}
|
|
63
|
-
onServerReady(cb) {
|
|
64
|
-
if (this._isServerReady) {
|
|
65
|
-
cb();
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
return this.emitter.on('open', cb);
|
|
69
|
-
}
|
|
70
62
|
resume() {
|
|
71
63
|
this._isServerReady = true;
|
|
72
64
|
if (this.sendQueue) {
|
|
@@ -79,11 +71,7 @@ class WSChannel {
|
|
|
79
71
|
dispatch(msg) {
|
|
80
72
|
switch (msg.kind) {
|
|
81
73
|
case 'server-ready':
|
|
82
|
-
this.stateTracer.fulfill(msg.token);
|
|
83
74
|
this.resume();
|
|
84
|
-
if (this.timer) {
|
|
85
|
-
clearTimeout(this.timer);
|
|
86
|
-
}
|
|
87
75
|
this.emitter.emit('open', msg.id);
|
|
88
76
|
break;
|
|
89
77
|
case 'data':
|
|
@@ -94,42 +82,14 @@ class WSChannel {
|
|
|
94
82
|
break;
|
|
95
83
|
}
|
|
96
84
|
}
|
|
97
|
-
|
|
98
|
-
* @param connectionToken 一个 connection token 用于在全链路中追踪一个 channel 的生命周期,防止 channel 被重复打开
|
|
99
|
-
*/
|
|
100
|
-
open(path, clientId, connectionToken = (0, ide_core_common_1.randomString)(16)) {
|
|
85
|
+
open(path, clientId) {
|
|
101
86
|
this.channelPath = path;
|
|
102
|
-
if (this.stateTracer.has(connectionToken)) {
|
|
103
|
-
this.logger.warn(`channel already opened or in progress, path: ${path}, clientId: ${clientId}, connectionToken: ${connectionToken}`);
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
this.stateTracer.record(connectionToken);
|
|
107
87
|
this.connection.send(stringify({
|
|
108
88
|
kind: 'open',
|
|
109
89
|
id: this.id,
|
|
110
90
|
path,
|
|
111
91
|
clientId,
|
|
112
|
-
connectionToken,
|
|
113
92
|
}));
|
|
114
|
-
if (this._ensureServerReady) {
|
|
115
|
-
this.ensureOpenSend(path, clientId, connectionToken);
|
|
116
|
-
}
|
|
117
|
-
return connectionToken;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* 启动定时器,确保 server-ready 消息在一定时间内到达
|
|
121
|
-
*/
|
|
122
|
-
ensureOpenSend(path, clientId, connectionToken) {
|
|
123
|
-
if (this.timer) {
|
|
124
|
-
clearTimeout(this.timer);
|
|
125
|
-
}
|
|
126
|
-
this.timer = setTimeout(() => {
|
|
127
|
-
if (this._isServerReady) {
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
this.stateTracer.delete(connectionToken);
|
|
131
|
-
this.open(path, clientId, connectionToken);
|
|
132
|
-
}, 500);
|
|
133
93
|
}
|
|
134
94
|
send(content) {
|
|
135
95
|
this.inqueue(stringify({
|
|
@@ -174,10 +134,6 @@ class WSChannel {
|
|
|
174
134
|
return conn;
|
|
175
135
|
}
|
|
176
136
|
dispose() {
|
|
177
|
-
if (this.timer) {
|
|
178
|
-
clearTimeout(this.timer);
|
|
179
|
-
}
|
|
180
|
-
this.sendQueue = [];
|
|
181
137
|
this._disposables.dispose();
|
|
182
138
|
}
|
|
183
139
|
}
|
|
@@ -186,29 +142,12 @@ exports.WSChannel = WSChannel;
|
|
|
186
142
|
* The server side channel, it will send a `server-ready` message after it receive a `open` message.
|
|
187
143
|
*/
|
|
188
144
|
class WSServerChannel extends WSChannel {
|
|
189
|
-
|
|
190
|
-
super(connection, options);
|
|
191
|
-
this.connection = connection;
|
|
192
|
-
this.messageQueue = [];
|
|
193
|
-
this.clientId = options.clientId;
|
|
194
|
-
}
|
|
195
|
-
serverReady(token) {
|
|
145
|
+
serverReady() {
|
|
196
146
|
this.connection.send(stringify({
|
|
197
147
|
kind: 'server-ready',
|
|
198
148
|
id: this.id,
|
|
199
|
-
token,
|
|
200
149
|
}));
|
|
201
150
|
}
|
|
202
|
-
dispatch(msg) {
|
|
203
|
-
switch (msg.kind) {
|
|
204
|
-
case 'data':
|
|
205
|
-
this.emitter.emit('message', msg.content);
|
|
206
|
-
break;
|
|
207
|
-
case 'binary':
|
|
208
|
-
this.emitter.emit('binary', msg.binary);
|
|
209
|
-
break;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
151
|
}
|
|
213
152
|
exports.WSServerChannel = WSServerChannel;
|
|
214
153
|
exports.PingProtocol = fury_1.Type.object('ping', {
|
|
@@ -223,20 +162,9 @@ exports.OpenProtocol = fury_1.Type.object('open', {
|
|
|
223
162
|
clientId: fury_1.Type.string(),
|
|
224
163
|
id: fury_1.Type.string(),
|
|
225
164
|
path: fury_1.Type.string(),
|
|
226
|
-
connectionToken: fury_1.Type.string(),
|
|
227
165
|
});
|
|
228
166
|
exports.ServerReadyProtocol = fury_1.Type.object('server-ready', {
|
|
229
167
|
id: fury_1.Type.string(),
|
|
230
|
-
token: fury_1.Type.string(),
|
|
231
|
-
});
|
|
232
|
-
var ErrorMessageCode;
|
|
233
|
-
(function (ErrorMessageCode) {
|
|
234
|
-
ErrorMessageCode[ErrorMessageCode["ChannelNotFound"] = 1] = "ChannelNotFound";
|
|
235
|
-
})(ErrorMessageCode = exports.ErrorMessageCode || (exports.ErrorMessageCode = {}));
|
|
236
|
-
exports.ErrorProtocol = fury_1.Type.object('error', {
|
|
237
|
-
id: fury_1.Type.string(),
|
|
238
|
-
code: fury_1.Type.uint16(),
|
|
239
|
-
message: fury_1.Type.string(),
|
|
240
168
|
});
|
|
241
169
|
exports.DataProtocol = fury_1.Type.object('data', {
|
|
242
170
|
id: fury_1.Type.string(),
|
|
@@ -251,7 +179,7 @@ exports.CloseProtocol = fury_1.Type.object('close', {
|
|
|
251
179
|
code: fury_1.Type.uint32(),
|
|
252
180
|
reason: fury_1.Type.string(),
|
|
253
181
|
});
|
|
254
|
-
const serializer = (0, one_of_1.
|
|
182
|
+
const serializer = (0, one_of_1.oneOf7)([
|
|
255
183
|
exports.PingProtocol,
|
|
256
184
|
exports.PongProtocol,
|
|
257
185
|
exports.OpenProtocol,
|
|
@@ -259,7 +187,6 @@ const serializer = (0, one_of_1.oneOf)([
|
|
|
259
187
|
exports.DataProtocol,
|
|
260
188
|
exports.BinaryProtocol,
|
|
261
189
|
exports.CloseProtocol,
|
|
262
|
-
exports.ErrorProtocol,
|
|
263
190
|
]);
|
|
264
191
|
function stringify(obj) {
|
|
265
192
|
return serializer.serialize(obj);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-channel.js","sourceRoot":"","sources":["../../src/common/ws-channel.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAEpC,6CAAgD;AAChD,+
|
|
1
|
+
{"version":3,"file":"ws-channel.js","sourceRoot":"","sources":["../../src/common/ws-channel.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAEpC,6CAAgD;AAChD,+DAA8F;AAG9F,kDAA+C;AAC/C,iDAA0E;AAqF1E,MAAa,SAAS;IAwBpB,MAAM,CAAC,SAAS,CAAC,UAAwC,EAAE,OAAgC;QACzF,MAAM,UAAU,GAAG,IAAI,sCAAoB,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEnD,UAAU,CAAC,IAAI,CACb,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CACH,CAAC;QAEF,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE;YACxB,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAmB,UAAwC,EAAE,OAAgC;QAA1E,eAAU,GAAV,UAAU,CAA8B;QAxCjD,iBAAY,GAAG,IAAI,iCAAe,EAAE,CAAC;QACrC,YAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CACvC,IAAI,qBAAY,EAMZ,CACL,CAAC;QAEQ,kBAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,4BAAU,EAAc,CAAC,CAAC;QAEpE,cAAS,GAAiB,EAAE,CAAC;QAC7B,mBAAc,GAAG,KAAK,CAAC;QAOjC,WAAM,GAAY,OAAO,CAAC;QAoBxB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;QAClD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAEb,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACtB;QAED,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAErD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAES,OAAO,CAAC,IAAgB;QAChC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACnD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;aACrB;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO;SACR;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS,CAAC,EAAyB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,QAAQ,CAAC,EAA6B;QACpC,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,CAAC,EAAwB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,QAAQ,CAAC,EAAc;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;gBACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC5B;YACD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;IACH,CAAC;IAED,QAAQ,CAAC,GAAmB;QAC1B,QAAQ,GAAG,CAAC,IAAI,EAAE;YAChB,KAAK,cAAc;gBACjB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBACxC,MAAM;SACT;IACH,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,QAAgB;QACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,SAAS,CAAC;YACR,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI;YACJ,QAAQ;SACT,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,IAAI,CAAC,OAAO,CACV,SAAS,CAAC;YACR,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO;SACR,CAAC,CACH,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,IAAgB;QACzB,IAAI,CAAC,OAAO,CACV,SAAS,CAAC;YACR,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI;SACb,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,KAAI,CAAC;IACZ,KAAK,CAAC,IAAa,EAAE,MAAe;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,UAAU;QACR,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,CAAC,EAA0C;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,SAAS,CAAC,EAA0C;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,SAAS,EAAE,CAAC,EAA0C,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7E,SAAS,EAAE,CAAC,EAA6B,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,IAAI,EAAE,CAAC,IAAgB,EAAE,EAAE;gBACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,KAAI,CAAC;SACb,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,UAAkC,EAAE;QACvD,MAAM,IAAI,GAAG,IAAI,2BAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;CACF;AA5KD,8BA4KC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,SAAS;IAC5C,WAAW;QACT,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,SAAS,CAAC;YACR,IAAI,EAAE,cAAc;YACpB,EAAE,EAAE,IAAI,CAAC,EAAE;SACZ,CAAC,CACH,CAAC;IACJ,CAAC;CACF;AATD,0CASC;AACY,QAAA,YAAY,GAAG,WAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IAC9C,QAAQ,EAAE,WAAI,CAAC,MAAM,EAAE;IACvB,EAAE,EAAE,WAAI,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,WAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IAC9C,QAAQ,EAAE,WAAI,CAAC,MAAM,EAAE;IACvB,EAAE,EAAE,WAAI,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,WAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IAC9C,QAAQ,EAAE,WAAI,CAAC,MAAM,EAAE;IACvB,EAAE,EAAE,WAAI,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,WAAI,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,WAAI,CAAC,MAAM,CAAC,cAAc,EAAE;IAC7D,EAAE,EAAE,WAAI,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,WAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IAC9C,EAAE,EAAE,WAAI,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,WAAI,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAEU,QAAA,cAAc,GAAG,WAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IAClD,EAAE,EAAE,WAAI,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,WAAI,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,WAAI,CAAC,MAAM,CAAC,OAAO,EAAE;IAChD,EAAE,EAAE,WAAI,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,WAAI,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,WAAI,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,IAAA,eAAM,EAAC;IACxB,oBAAY;IACZ,oBAAY;IACZ,oBAAY;IACZ,2BAAmB;IACnB,oBAAY;IACZ,sBAAc;IACd,qBAAa;CACd,CAAC,CAAC;AAEH,SAAgB,SAAS,CAAC,GAAmB;IAC3C,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAFD,8BAEC;AAED,SAAgB,KAAK,CAAC,KAAiB;IACrC,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,CAAQ,CAAC;AAC9C,CAAC;AAFD,sBAEC;AAED,MAAM,YAAY,GAAgB;IAChC,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,EAAE;IACN,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,YAAY,GAAgB;IAChC,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,EAAE;IACN,QAAQ,EAAE,EAAE;CACb,CAAC;AAEW,QAAA,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;AACtC,QAAA,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC"}
|
package/lib/node/ws.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/node/ws.ts"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,8BAAsB,gBAAgB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO;IACvF,IAAI,CAAC,IAAI,IAAI;CACd;AAED,MAAM,WAAW,2BAA2B;IAC1C,eAAe,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC;IACnC,gBAAgB,CAAC,EAAE;QAEjB,GAAG,CAAC,EAAE,OAAO,CAAC;KACf,CAAC;CACH;AAED,qBAAa,oBAAoB;IAO7B,OAAO,CAAC,MAAM;IANT,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,kBAAkB,CAAqB;gBAG7C,MAAM,EAAE,IAAI,CAAC,MAAM,EACX,MAAM,GAAE,GAAa,EAC7B,IAAI,SAAO,EACX,kBAAkB,GAAE,gBAAgB,EAAO;IAUtC,eAAe,CAAC,OAAO,EAAE,gBAAgB;IASzC,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM;IAkBhD,IAAI;IAKX,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/node/ws.ts"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,8BAAsB,gBAAgB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO;IACvF,IAAI,CAAC,IAAI,IAAI;CACd;AAED,MAAM,WAAW,2BAA2B;IAC1C,eAAe,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC;IACnC,gBAAgB,CAAC,EAAE;QAEjB,GAAG,CAAC,EAAE,OAAO,CAAC;KACf,CAAC;CACH;AAED,qBAAa,oBAAoB;IAO7B,OAAO,CAAC,MAAM;IANT,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,kBAAkB,CAAqB;gBAG7C,MAAM,EAAE,IAAI,CAAC,MAAM,EACX,MAAM,GAAE,GAAa,EAC7B,IAAI,SAAO,EACX,kBAAkB,GAAE,gBAAgB,EAAO;IAUtC,eAAe,CAAC,OAAO,EAAE,gBAAgB;IASzC,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM;IAkBhD,IAAI;IAKX,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;CA2BtB"}
|
package/lib/node/ws.js
CHANGED
package/lib/node/ws.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../../src/node/ws.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../../src/node/ws.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-connection",
|
|
3
|
-
"version": "3.0.2-next-
|
|
3
|
+
"version": "3.0.2-next-1715852509.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src"
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@furyjs/fury": "0.5.9-beta",
|
|
21
21
|
"@opensumi/events": "^1.0.0",
|
|
22
|
-
"@opensumi/ide-core-common": "3.0.2-next-
|
|
23
|
-
"@opensumi/reconnecting-websocket": "^4.4.0",
|
|
22
|
+
"@opensumi/ide-core-common": "3.0.2-next-1715852509.0",
|
|
24
23
|
"@opensumi/vscode-jsonrpc": "^8.0.0-next.2",
|
|
25
24
|
"path-to-regexp": "^6.2.1",
|
|
25
|
+
"reconnecting-websocket": "^4.4.0",
|
|
26
26
|
"ws": "^8.16.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@opensumi/ide-components": "3.0.2-next-
|
|
30
|
-
"@opensumi/ide-dev-tool": "3.0.2-next-
|
|
29
|
+
"@opensumi/ide-components": "3.0.2-next-1715852509.0",
|
|
30
|
+
"@opensumi/ide-dev-tool": "3.0.2-next-1715852509.0",
|
|
31
31
|
"@opensumi/mock-socket": "^9.3.1"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "b9909c18c2f917ee73f6e19fdc2f5f33dbc616c7"
|
|
34
34
|
}
|
|
@@ -1,22 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Barrier, Deferred, DisposableStore, IReporterService, MultiMap, REPORT_NAME } from '@opensumi/ide-core-common';
|
|
1
|
+
import { Barrier, Deferred, IReporterService, MultiMap, REPORT_NAME } from '@opensumi/ide-core-common';
|
|
3
2
|
|
|
4
3
|
import { NetSocketConnection } from '../common/connection';
|
|
5
4
|
import { ReconnectingWebSocketConnection } from '../common/connection/drivers/reconnecting-websocket';
|
|
6
5
|
import { ConnectionInfo, WSCloseInfo } from '../common/types';
|
|
7
|
-
import {
|
|
6
|
+
import { WSChannel, parse, pingMessage } from '../common/ws-channel';
|
|
8
7
|
|
|
9
8
|
/**
|
|
10
9
|
* Channel Handler in browser
|
|
11
10
|
*/
|
|
12
11
|
export class WSChannelHandler {
|
|
13
|
-
private _disposables = new DisposableStore();
|
|
14
|
-
|
|
15
|
-
private _onChannelCreatedEmitter = this._disposables.add(new EventEmitter<Record<string, [WSChannel]>>());
|
|
16
|
-
public onChannelCreated(path: string, listener: (channel: WSChannel) => void) {
|
|
17
|
-
return this._onChannelCreatedEmitter.on(path, listener);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
12
|
private channelMap: Map<string, WSChannel> = new Map();
|
|
21
13
|
private channelCloseEventMap = new MultiMap<string, WSCloseInfo>();
|
|
22
14
|
private logger = console;
|
|
@@ -62,33 +54,11 @@ export class WSChannelHandler {
|
|
|
62
54
|
|
|
63
55
|
const msg = parse(message);
|
|
64
56
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
this.logger.error(this.LOG_TAG, `receive error: id: ${msg.id}, code: ${msg.code}, error: ${msg.message}`);
|
|
71
|
-
switch (msg.code) {
|
|
72
|
-
case ErrorMessageCode.ChannelNotFound:
|
|
73
|
-
if (this.channelMap.has(msg.id)) {
|
|
74
|
-
// 如果远程报错 channel 不存在但是本机存在,则重新打开
|
|
75
|
-
const channel = this.channelMap.get(msg.id)!;
|
|
76
|
-
if (channel.channelPath) {
|
|
77
|
-
channel.pause();
|
|
78
|
-
channel.open(channel.channelPath, this.clientId);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
break;
|
|
84
|
-
default: {
|
|
85
|
-
const channel = this.channelMap.get(msg.id);
|
|
86
|
-
if (channel) {
|
|
87
|
-
channel.dispatch(msg);
|
|
88
|
-
} else {
|
|
89
|
-
this.logger.warn(this.LOG_TAG, `channel ${msg.id} not found`);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
57
|
+
const channel = this.channelMap.get(msg.id);
|
|
58
|
+
if (channel) {
|
|
59
|
+
channel.dispatch(msg);
|
|
60
|
+
} else {
|
|
61
|
+
this.logger.warn(this.LOG_TAG, `channel ${msg.id} not found`);
|
|
92
62
|
}
|
|
93
63
|
});
|
|
94
64
|
|
|
@@ -102,7 +72,7 @@ export class WSChannelHandler {
|
|
|
102
72
|
|
|
103
73
|
this.connection.onClose((code, reason) => {
|
|
104
74
|
this.channelMap.forEach((channel) => {
|
|
105
|
-
channel.close(code, reason);
|
|
75
|
+
channel.close(code ?? 1000, reason ?? '');
|
|
106
76
|
});
|
|
107
77
|
});
|
|
108
78
|
|
|
@@ -124,28 +94,13 @@ export class WSChannelHandler {
|
|
|
124
94
|
await this.openingBarrier.wait();
|
|
125
95
|
}
|
|
126
96
|
|
|
127
|
-
private fillKey(channelPath: string) {
|
|
128
|
-
return `${this.clientId}:${channelPath}`;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
public getChannel(channelPath: string) {
|
|
132
|
-
return this.channelMap.get(this.fillKey(channelPath));
|
|
133
|
-
}
|
|
134
|
-
|
|
135
97
|
public async openChannel(channelPath: string) {
|
|
136
|
-
const key = this.fillKey(channelPath);
|
|
137
|
-
if (this.channelMap.has(key)) {
|
|
138
|
-
this.channelMap.get(key)!.dispose();
|
|
139
|
-
this.logger.log(this.LOG_TAG, `channel ${key} already exists, dispose it`);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
98
|
const channel = new WSChannel(this.connection, {
|
|
143
|
-
id:
|
|
99
|
+
id: `${this.clientId}:${channelPath}`,
|
|
144
100
|
logger: this.logger,
|
|
145
101
|
ensureServerReady: true,
|
|
146
102
|
});
|
|
147
103
|
this.channelMap.set(channel.id, channel);
|
|
148
|
-
this._onChannelCreatedEmitter.emit(channelPath, channel);
|
|
149
104
|
|
|
150
105
|
let channelOpenedCount = 0;
|
|
151
106
|
|
|
@@ -178,7 +133,7 @@ export class WSChannelHandler {
|
|
|
178
133
|
closeEvent: { code, reason },
|
|
179
134
|
connectInfo: (navigator as any).connection as ConnectionInfo,
|
|
180
135
|
});
|
|
181
|
-
this.logger.log(this.LOG_TAG, `channel
|
|
136
|
+
this.logger.log(this.LOG_TAG, `channel close: code: ${code}, reason: ${reason}`);
|
|
182
137
|
});
|
|
183
138
|
|
|
184
139
|
const deferred = new Deferred<void>();
|
|
@@ -199,24 +154,5 @@ export class WSChannelHandler {
|
|
|
199
154
|
if (this.heartbeatMessageTimer) {
|
|
200
155
|
clearTimeout(this.heartbeatMessageTimer);
|
|
201
156
|
}
|
|
202
|
-
this._disposables.dispose();
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
awaitChannelReady(channelPath: string) {
|
|
206
|
-
const channel = this.getChannel(channelPath);
|
|
207
|
-
const deferred = new Deferred<void>();
|
|
208
|
-
if (channel) {
|
|
209
|
-
channel.onServerReady(() => {
|
|
210
|
-
deferred.resolve();
|
|
211
|
-
});
|
|
212
|
-
} else {
|
|
213
|
-
const dispose = this.onChannelCreated(channelPath, (channel) => {
|
|
214
|
-
channel.onServerReady(() => {
|
|
215
|
-
deferred.resolve();
|
|
216
|
-
});
|
|
217
|
-
dispose.dispose();
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
return deferred.promise;
|
|
221
157
|
}
|
|
222
158
|
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
+
import ReconnectingWebSocket, { Options as ReconnectingWebSocketOptions, UrlProvider } from 'reconnecting-websocket';
|
|
2
|
+
|
|
1
3
|
import { IDisposable } from '@opensumi/ide-core-common';
|
|
2
|
-
import ReconnectingWebSocket, {
|
|
3
|
-
Options as ReconnectingWebSocketOptions,
|
|
4
|
-
UrlProvider,
|
|
5
|
-
} from '@opensumi/reconnecting-websocket';
|
|
6
4
|
|
|
7
5
|
import { BaseConnection } from './base';
|
|
8
6
|
|
|
9
|
-
import type { ErrorEvent } from '
|
|
7
|
+
import type { ErrorEvent } from 'reconnecting-websocket';
|
|
10
8
|
|
|
11
9
|
export class ReconnectingWebSocketConnection extends BaseConnection<Uint8Array> {
|
|
12
10
|
constructor(private socket: ReconnectingWebSocket) {
|
|
@@ -5,9 +5,7 @@ import { FuryFactoryReturn, furyFactory } from './shared';
|
|
|
5
5
|
|
|
6
6
|
type Writable = Record<string, any> & { kind: string };
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
export const oneOf = (
|
|
8
|
+
export const oneOf7 = (
|
|
11
9
|
schemas: [
|
|
12
10
|
TypeDescription,
|
|
13
11
|
TypeDescription,
|
|
@@ -16,7 +14,6 @@ export const oneOf = (
|
|
|
16
14
|
TypeDescription,
|
|
17
15
|
TypeDescription,
|
|
18
16
|
TypeDescription,
|
|
19
|
-
TypeDescription,
|
|
20
17
|
],
|
|
21
18
|
context?: FuryFactoryReturn,
|
|
22
19
|
) => {
|
|
@@ -26,8 +23,8 @@ export const oneOf = (
|
|
|
26
23
|
|
|
27
24
|
const { fury, reader, writer } = context;
|
|
28
25
|
|
|
29
|
-
const serializers = new Array(
|
|
30
|
-
const kinds = new Array(
|
|
26
|
+
const serializers = new Array(7) as Serializer[];
|
|
27
|
+
const kinds = new Array(7) as string[];
|
|
31
28
|
|
|
32
29
|
const kindToIndex = {} as Record<string, number>;
|
|
33
30
|
|
|
@@ -65,9 +62,6 @@ export const oneOf = (
|
|
|
65
62
|
case 6:
|
|
66
63
|
v = serializers[6].read();
|
|
67
64
|
break;
|
|
68
|
-
case 7:
|
|
69
|
-
v = serializers[7].read();
|
|
70
|
-
break;
|
|
71
65
|
}
|
|
72
66
|
|
|
73
67
|
v.kind = kinds[idx];
|
|
@@ -103,9 +97,6 @@ export const oneOf = (
|
|
|
103
97
|
case 6:
|
|
104
98
|
serializers[6].write(v);
|
|
105
99
|
break;
|
|
106
|
-
case 7:
|
|
107
|
-
serializers[7].write(v);
|
|
108
|
-
break;
|
|
109
100
|
}
|
|
110
101
|
|
|
111
102
|
return writer.dump();
|