@opensumi/ide-connection 2.27.3-next-1706520813.0 → 2.27.3-rc-1706687185.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 +9 -7
- package/lib/browser/ws-channel-handler.d.ts.map +1 -1
- package/lib/browser/ws-channel-handler.js +65 -64
- package/lib/browser/ws-channel-handler.js.map +1 -1
- package/lib/common/connect.d.ts +6 -57
- package/lib/common/connect.d.ts.map +1 -1
- package/lib/common/connect.js +9 -168
- package/lib/common/connect.js.map +1 -1
- package/lib/common/connection/buffers.d.ts +55 -0
- package/lib/common/connection/buffers.d.ts.map +1 -0
- package/lib/common/connection/buffers.js +244 -0
- package/lib/common/connection/buffers.js.map +1 -0
- package/lib/common/connection/drivers/base.d.ts +9 -0
- package/lib/common/connection/drivers/base.d.ts.map +1 -0
- package/lib/common/connection/drivers/base.js +11 -0
- package/lib/common/connection/drivers/base.js.map +1 -0
- package/lib/common/connection/drivers/empty.d.ts +8 -0
- package/lib/common/connection/drivers/empty.d.ts.map +1 -0
- package/lib/common/connection/drivers/empty.js +21 -0
- package/lib/common/connection/drivers/empty.js.map +1 -0
- package/lib/common/connection/drivers/index.d.ts +6 -0
- package/lib/common/connection/drivers/index.d.ts.map +1 -0
- package/lib/common/connection/drivers/index.js +9 -0
- package/lib/common/connection/drivers/index.js.map +1 -0
- package/lib/common/connection/drivers/node-message-port.d.ts +12 -0
- package/lib/common/connection/drivers/node-message-port.d.ts.map +1 -0
- package/lib/common/connection/drivers/node-message-port.js +31 -0
- package/lib/common/connection/drivers/node-message-port.js.map +1 -0
- package/lib/common/connection/drivers/reconnecting-websocket.d.ts +15 -0
- package/lib/common/connection/drivers/reconnecting-websocket.d.ts.map +1 -0
- package/lib/common/connection/drivers/reconnecting-websocket.js +83 -0
- package/lib/common/connection/drivers/reconnecting-websocket.js.map +1 -0
- package/lib/common/connection/drivers/socket.d.ts +17 -0
- package/lib/common/connection/drivers/socket.d.ts.map +1 -0
- package/lib/common/connection/drivers/socket.js +56 -0
- package/lib/common/connection/drivers/socket.js.map +1 -0
- package/lib/common/connection/drivers/stream-decoder.d.ts +67 -0
- package/lib/common/connection/drivers/stream-decoder.d.ts.map +1 -0
- package/lib/common/connection/drivers/stream-decoder.js +171 -0
- package/lib/common/connection/drivers/stream-decoder.js.map +1 -0
- package/lib/common/connection/drivers/utils.d.ts +12 -0
- package/lib/common/connection/drivers/utils.d.ts.map +1 -0
- package/lib/common/connection/drivers/utils.js +49 -0
- package/lib/common/connection/drivers/utils.js.map +1 -0
- package/lib/common/connection/drivers/ws-websocket.d.ts +11 -0
- package/lib/common/connection/drivers/ws-websocket.d.ts.map +1 -0
- package/lib/common/connection/drivers/ws-websocket.js +31 -0
- package/lib/common/connection/drivers/ws-websocket.js.map +1 -0
- package/lib/common/connection/index.d.ts +2 -0
- package/lib/common/connection/index.d.ts.map +1 -0
- package/lib/common/connection/index.js +5 -0
- package/lib/common/connection/index.js.map +1 -0
- package/lib/common/connection/types.d.ts +7 -0
- package/lib/common/connection/types.d.ts.map +1 -0
- package/lib/common/connection/types.js +3 -0
- package/lib/common/connection/types.js.map +1 -0
- package/lib/common/constants.d.ts +2 -0
- package/lib/common/constants.d.ts.map +1 -0
- package/lib/common/constants.js +5 -0
- package/lib/common/constants.js.map +1 -0
- package/lib/common/{rpcProtocol.d.ts → ext-rpc-protocol.d.ts} +10 -11
- package/lib/common/ext-rpc-protocol.d.ts.map +1 -0
- package/lib/common/{rpcProtocol.js → ext-rpc-protocol.js} +22 -19
- package/lib/common/ext-rpc-protocol.js.map +1 -0
- package/lib/common/index.d.ts +2 -1
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +2 -1
- package/lib/common/index.js.map +1 -1
- package/lib/common/proxy/base.d.ts +22 -0
- package/lib/common/proxy/base.d.ts.map +1 -0
- package/lib/common/proxy/base.js +47 -0
- package/lib/common/proxy/base.js.map +1 -0
- package/lib/common/proxy/index.d.ts +8 -0
- package/lib/common/proxy/index.d.ts.map +1 -0
- package/lib/common/proxy/index.js +12 -0
- package/lib/common/proxy/index.js.map +1 -0
- package/lib/common/proxy/legacy.d.ts +23 -0
- package/lib/common/proxy/legacy.d.ts.map +1 -0
- package/lib/common/proxy/legacy.js +183 -0
- package/lib/common/proxy/legacy.js.map +1 -0
- package/lib/common/rpc-service/center.d.ts +20 -0
- package/lib/common/rpc-service/center.d.ts.map +1 -0
- package/lib/common/rpc-service/center.js +100 -0
- package/lib/common/rpc-service/center.js.map +1 -0
- package/lib/common/rpc-service/index.d.ts +3 -0
- package/lib/common/rpc-service/index.d.ts.map +1 -0
- package/lib/common/rpc-service/index.js +6 -0
- package/lib/common/rpc-service/index.js.map +1 -0
- package/lib/common/rpc-service/stub.d.ts +15 -0
- package/lib/common/rpc-service/stub.d.ts.map +1 -0
- package/lib/common/rpc-service/stub.js +48 -0
- package/lib/common/rpc-service/stub.js.map +1 -0
- package/lib/common/types.d.ts +15 -0
- package/lib/common/types.d.ts.map +1 -0
- package/lib/common/types.js +9 -0
- package/lib/common/types.js.map +1 -0
- package/lib/common/utils.d.ts +4 -2
- package/lib/common/utils.d.ts.map +1 -1
- package/lib/common/utils.js +32 -9
- package/lib/common/utils.js.map +1 -1
- package/lib/common/ws-channel.d.ts +104 -27
- package/lib/common/ws-channel.d.ts.map +1 -1
- package/lib/common/ws-channel.js +96 -27
- package/lib/common/ws-channel.js.map +1 -1
- package/lib/node/common-channel-handler.d.ts +18 -16
- package/lib/node/common-channel-handler.d.ts.map +1 -1
- package/lib/node/common-channel-handler.js +42 -59
- package/lib/node/common-channel-handler.js.map +1 -1
- package/lib/node/index.d.ts +0 -3
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +0 -5
- package/lib/node/index.js.map +1 -1
- package/lib/node/ws.d.ts +1 -1
- package/lib/node/ws.d.ts.map +1 -1
- package/lib/node/ws.js +2 -0
- package/lib/node/ws.js.map +1 -1
- package/package.json +9 -7
- package/src/browser/ws-channel-handler.ts +82 -70
- package/src/common/connect.ts +7 -193
- package/src/common/connection/buffers.ts +284 -0
- package/src/common/connection/drivers/base.ts +15 -0
- package/src/common/connection/drivers/empty.ts +19 -0
- package/src/common/connection/drivers/index.ts +5 -0
- package/src/common/connection/drivers/node-message-port.ts +33 -0
- package/src/common/connection/drivers/reconnecting-websocket.ts +86 -0
- package/src/common/connection/drivers/socket.ts +62 -0
- package/src/common/connection/drivers/stream-decoder.ts +196 -0
- package/src/common/connection/drivers/utils.ts +52 -0
- package/src/common/connection/drivers/ws-websocket.ts +31 -0
- package/src/common/connection/index.ts +1 -0
- package/src/common/connection/types.ts +7 -0
- package/src/common/constants.ts +1 -0
- package/src/common/{rpcProtocol.ts → ext-rpc-protocol.ts} +43 -31
- package/src/common/index.ts +2 -1
- package/src/common/proxy/base.ts +67 -0
- package/src/common/proxy/index.ts +10 -0
- package/src/common/proxy/legacy.ts +200 -0
- package/src/common/rpc-service/center.ts +124 -0
- package/src/common/rpc-service/index.ts +2 -0
- package/src/common/rpc-service/stub.ts +49 -0
- package/src/common/types.ts +17 -0
- package/src/common/utils.ts +31 -8
- package/src/common/ws-channel.ts +175 -48
- package/src/node/common-channel-handler.ts +68 -80
- package/src/node/index.ts +0 -5
- package/src/node/ws.ts +3 -1
- package/lib/common/proxy.d.ts +0 -47
- package/lib/common/proxy.d.ts.map +0 -1
- package/lib/common/proxy.js +0 -272
- package/lib/common/proxy.js.map +0 -1
- package/lib/common/rpcProtocol.d.ts.map +0 -1
- package/lib/common/rpcProtocol.js.map +0 -1
- package/lib/node/connect.d.ts +0 -4
- package/lib/node/connect.d.ts.map +0 -1
- package/lib/node/connect.js +0 -9
- package/lib/node/connect.js.map +0 -1
- package/src/common/proxy.ts +0 -303
- package/src/node/connect.ts +0 -11
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CommonChannelHandler = exports.commonChannelPathHandler = exports.CommonChannelPathHandler = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const
|
|
5
|
+
const path_to_regexp_1 = require("path-to-regexp");
|
|
6
6
|
const ws_1 = tslib_1.__importDefault(require("ws"));
|
|
7
|
-
const
|
|
7
|
+
const connection_1 = require("../common/connection");
|
|
8
8
|
const ws_channel_1 = require("../common/ws-channel");
|
|
9
9
|
const ws_2 = require("./ws");
|
|
10
10
|
class CommonChannelPathHandler {
|
|
@@ -25,9 +25,9 @@ class CommonChannelPathHandler {
|
|
|
25
25
|
}
|
|
26
26
|
const handlerArr = this.handlerMap.get(channelToken);
|
|
27
27
|
const handlerFn = handler.handler.bind(handler);
|
|
28
|
-
const setHandler = (
|
|
29
|
-
handler.connection =
|
|
30
|
-
handlerFn(
|
|
28
|
+
const setHandler = (channel, clientId, params) => {
|
|
29
|
+
handler.connection = channel;
|
|
30
|
+
handlerFn(channel, clientId, params);
|
|
31
31
|
};
|
|
32
32
|
handler.handler = setHandler;
|
|
33
33
|
handlerArr.push(handler);
|
|
@@ -73,7 +73,9 @@ class CommonChannelPathHandler {
|
|
|
73
73
|
}
|
|
74
74
|
exports.CommonChannelPathHandler = CommonChannelPathHandler;
|
|
75
75
|
exports.commonChannelPathHandler = new CommonChannelPathHandler();
|
|
76
|
-
|
|
76
|
+
/**
|
|
77
|
+
* Channel Handler for nodejs
|
|
78
|
+
*/
|
|
77
79
|
class CommonChannelHandler extends ws_2.WebSocketHandler {
|
|
78
80
|
constructor(routePath, logger = console, options = {}) {
|
|
79
81
|
super();
|
|
@@ -81,26 +83,14 @@ class CommonChannelHandler extends ws_2.WebSocketHandler {
|
|
|
81
83
|
this.options = options;
|
|
82
84
|
this.handlerId = 'common-channel';
|
|
83
85
|
this.channelMap = new Map();
|
|
84
|
-
this.connectionMap = new Map();
|
|
85
86
|
this.heartbeatMap = new Map();
|
|
86
|
-
this.
|
|
87
|
-
if (connection.readyState === connection.OPEN) {
|
|
88
|
-
connection.send(content, (err) => {
|
|
89
|
-
if (err) {
|
|
90
|
-
this.logger.log(err);
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
const route = (0, path_match_1.default)(options.pathMatchOptions);
|
|
96
|
-
this.handlerRoute = route(`${routePath}`);
|
|
87
|
+
this.handlerRoute = (0, path_to_regexp_1.match)(routePath, options.pathMatchOptions);
|
|
97
88
|
this.initWSServer();
|
|
98
89
|
}
|
|
99
|
-
|
|
90
|
+
heartbeat(connectionId, connection) {
|
|
100
91
|
const timer = global.setTimeout(() => {
|
|
101
92
|
connection.ping();
|
|
102
|
-
|
|
103
|
-
this.hearbeat(connectionId, connection);
|
|
93
|
+
this.heartbeat(connectionId, connection);
|
|
104
94
|
}, 5000);
|
|
105
95
|
this.heartbeatMap.set(connectionId, timer);
|
|
106
96
|
}
|
|
@@ -108,31 +98,25 @@ class CommonChannelHandler extends ws_2.WebSocketHandler {
|
|
|
108
98
|
this.logger.log('init Common Channel Handler');
|
|
109
99
|
this.wsServer = new ws_1.default.Server(Object.assign({ noServer: true }, this.options.wsServerOptions));
|
|
110
100
|
this.wsServer.on('connection', (connection) => {
|
|
111
|
-
let
|
|
101
|
+
let clientId;
|
|
112
102
|
connection.on('message', (msg) => {
|
|
113
103
|
let msgObj;
|
|
114
104
|
try {
|
|
115
|
-
msgObj = (0,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
this.logger.log(`New connection with id ${clientId}`);
|
|
123
|
-
connectionId = clientId;
|
|
124
|
-
this.connectionMap.set(clientId, connection);
|
|
125
|
-
this.hearbeat(connectionId, connection);
|
|
126
|
-
// channel 消息处理
|
|
105
|
+
msgObj = (0, ws_channel_1.parse)(msg);
|
|
106
|
+
if (msgObj.kind === 'ping') {
|
|
107
|
+
connection.send((0, ws_channel_1.stringify)({
|
|
108
|
+
kind: 'pong',
|
|
109
|
+
id: msgObj.id,
|
|
110
|
+
clientId,
|
|
111
|
+
}));
|
|
127
112
|
}
|
|
128
113
|
else if (msgObj.kind === 'open') {
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
this.logger.log(`
|
|
132
|
-
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
this.channelMap.set(channelId, channel);
|
|
114
|
+
const { id, path } = msgObj;
|
|
115
|
+
clientId = msgObj.clientId;
|
|
116
|
+
this.logger.log(`open a new connection channel ${clientId} with path ${path}`);
|
|
117
|
+
this.heartbeat(id, connection);
|
|
118
|
+
const channel = new ws_channel_1.WSChannel(new connection_1.WSWebSocketConnection(connection), { id });
|
|
119
|
+
this.channelMap.set(id, channel);
|
|
136
120
|
// 根据 path 拿到注册的 handler
|
|
137
121
|
let handlerArr = exports.commonChannelPathHandler.get(path);
|
|
138
122
|
let params;
|
|
@@ -148,10 +132,10 @@ class CommonChannelHandler extends ws_2.WebSocketHandler {
|
|
|
148
132
|
if (handlerArr) {
|
|
149
133
|
for (let i = 0, len = handlerArr.length; i < len; i++) {
|
|
150
134
|
const handler = handlerArr[i];
|
|
151
|
-
handler.handler(channel,
|
|
135
|
+
handler.handler(channel, clientId, params);
|
|
152
136
|
}
|
|
153
137
|
}
|
|
154
|
-
channel.
|
|
138
|
+
channel.serverReady();
|
|
155
139
|
}
|
|
156
140
|
else {
|
|
157
141
|
const { id } = msgObj;
|
|
@@ -165,35 +149,35 @@ class CommonChannelHandler extends ws_2.WebSocketHandler {
|
|
|
165
149
|
}
|
|
166
150
|
}
|
|
167
151
|
catch (e) {
|
|
168
|
-
this.logger.
|
|
152
|
+
this.logger.error('handle connection message error', e);
|
|
169
153
|
}
|
|
170
154
|
});
|
|
171
|
-
connection.
|
|
172
|
-
exports.commonChannelPathHandler.disposeConnectionClientId(connection,
|
|
173
|
-
if (this.heartbeatMap.has(
|
|
174
|
-
clearTimeout(this.heartbeatMap.get(
|
|
175
|
-
this.heartbeatMap.delete(
|
|
176
|
-
this.logger.
|
|
155
|
+
connection.once('close', () => {
|
|
156
|
+
exports.commonChannelPathHandler.disposeConnectionClientId(connection, clientId);
|
|
157
|
+
if (this.heartbeatMap.has(clientId)) {
|
|
158
|
+
clearTimeout(this.heartbeatMap.get(clientId));
|
|
159
|
+
this.heartbeatMap.delete(clientId);
|
|
160
|
+
this.logger.log(`Clear heartbeat from channel ${clientId}`);
|
|
177
161
|
}
|
|
178
162
|
Array.from(this.channelMap.values())
|
|
179
|
-
.filter((channel) => channel.id.toString().indexOf(
|
|
163
|
+
.filter((channel) => channel.id.toString().indexOf(clientId) !== -1)
|
|
180
164
|
.forEach((channel) => {
|
|
181
165
|
channel.close(1, 'close');
|
|
166
|
+
channel.dispose();
|
|
182
167
|
this.channelMap.delete(channel.id);
|
|
183
|
-
this.logger.
|
|
168
|
+
this.logger.log(`Remove connection channel ${channel.id}`);
|
|
184
169
|
});
|
|
185
170
|
});
|
|
186
171
|
});
|
|
187
172
|
}
|
|
188
|
-
handleUpgrade(
|
|
189
|
-
const routeResult = this.handlerRoute(
|
|
173
|
+
handleUpgrade(pathname, request, socket, head) {
|
|
174
|
+
const routeResult = this.handlerRoute(pathname);
|
|
190
175
|
if (routeResult) {
|
|
191
|
-
|
|
192
|
-
wsServer.handleUpgrade(request, socket, head, (connection) => {
|
|
176
|
+
this.wsServer.handleUpgrade(request, socket, head, (connection) => {
|
|
193
177
|
connection.routeParam = {
|
|
194
|
-
pathname
|
|
178
|
+
pathname,
|
|
195
179
|
};
|
|
196
|
-
wsServer.emit('connection', connection);
|
|
180
|
+
this.wsServer.emit('connection', connection);
|
|
197
181
|
});
|
|
198
182
|
return true;
|
|
199
183
|
}
|
|
@@ -201,5 +185,4 @@ class CommonChannelHandler extends ws_2.WebSocketHandler {
|
|
|
201
185
|
}
|
|
202
186
|
}
|
|
203
187
|
exports.CommonChannelHandler = CommonChannelHandler;
|
|
204
|
-
CommonChannelHandler.channelId = 0;
|
|
205
188
|
//# sourceMappingURL=common-channel-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-channel-handler.js","sourceRoot":"","sources":["../../src/node/common-channel-handler.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"common-channel-handler.js","sourceRoot":"","sources":["../../src/node/common-channel-handler.ts"],"names":[],"mappings":"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"}
|
package/lib/node/index.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { SocketMessageReader, SocketMessageWriter } from '@opensumi/vscode-jsonrpc/lib/node/main';
|
|
2
1
|
export * from './ws';
|
|
3
2
|
export * from './common-channel-handler';
|
|
4
|
-
export * from './connect';
|
|
5
|
-
export { SocketMessageReader, SocketMessageWriter };
|
|
6
3
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,0BAA0B,CAAC"}
|
package/lib/node/index.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SocketMessageWriter = exports.SocketMessageReader = void 0;
|
|
4
3
|
const tslib_1 = require("tslib");
|
|
5
|
-
const main_1 = require("@opensumi/vscode-jsonrpc/lib/node/main");
|
|
6
|
-
Object.defineProperty(exports, "SocketMessageReader", { enumerable: true, get: function () { return main_1.SocketMessageReader; } });
|
|
7
|
-
Object.defineProperty(exports, "SocketMessageWriter", { enumerable: true, get: function () { return main_1.SocketMessageWriter; } });
|
|
8
4
|
tslib_1.__exportStar(require("./ws"), exports);
|
|
9
5
|
tslib_1.__exportStar(require("./common-channel-handler"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./connect"), exports);
|
|
11
6
|
//# sourceMappingURL=index.js.map
|
package/lib/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";;;AAAA,+CAAqB;AACrB,mEAAyC"}
|
package/lib/node/ws.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import http from 'http';
|
|
|
3
3
|
import ws from 'ws';
|
|
4
4
|
export declare abstract class WebSocketHandler {
|
|
5
5
|
abstract handlerId: string;
|
|
6
|
-
abstract handleUpgrade(
|
|
6
|
+
abstract handleUpgrade(pathname: string, request: any, socket: any, head: any): boolean;
|
|
7
7
|
init?(): void;
|
|
8
8
|
}
|
|
9
9
|
export interface CommonChannelHandlerOptions {
|
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":";
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/node/ws.ts"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,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;CAwBtB"}
|
package/lib/node/ws.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WebSocketServerRoute = exports.WebSocketHandler = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
5
6
|
const http_1 = tslib_1.__importDefault(require("http"));
|
|
6
7
|
const url_1 = tslib_1.__importDefault(require("url"));
|
|
7
8
|
class WebSocketHandler {
|
|
@@ -64,6 +65,7 @@ class WebSocketServerRoute {
|
|
|
64
65
|
const server = this.server;
|
|
65
66
|
const wsServerHandlerArr = this.wsServerHandlerArr;
|
|
66
67
|
server.on('upgrade', (request, socket, head) => {
|
|
68
|
+
(0, assert_1.default)(request.url, 'cannot parse url from http request');
|
|
67
69
|
const wsPathname = url_1.default.parse(request.url).pathname;
|
|
68
70
|
let wsHandlerIndex = 0;
|
|
69
71
|
const wsHandlerLength = wsServerHandlerArr.length;
|
package/lib/node/ws.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../../src/node/ws.ts"],"names":[],"mappings":";;;;AAAA,wDAAwB;AACxB,sDAAsB;AAItB,MAAsB,gBAAgB;CAIrC;AAJD,4CAIC;AAUD,MAAa,oBAAoB;IAK/B,YACE,MAAmB,EACX,SAAc,OAAO,EAC7B,IAAI,GAAG,IAAI,EACX,qBAAyC,EAAE;QAFnC,WAAM,GAAN,MAAM,CAAe;QAI7B,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,MAAM,GAAG,MAAqB,CAAC;SACrC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAEM,eAAe,CAAC,OAAyB;QAC9C,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACnD,MAAM,WAAW,GAAG,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAQ,CAAC,SAAS,CAAC;QAEhF,IAAI,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;YACpD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACvC;IACH,CAAC;IAEM,aAAa,CAAC,OAAkC;QACrD,IAAI,SAAiB,CAAC;QACtB,IAAK,OAA4B,CAAC,SAAS,EAAE;YAC3C,SAAS,GAAI,OAA4B,CAAC,SAAS,CAAC;SACrD;aAAM;YACL,SAAS,GAAG,OAAiB,CAAC;SAC/B;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QAErG,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;YACvB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAChD,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IACO,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,cAAI,CAAC,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;gBACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IACO,WAAW;QACjB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1C,IAAI,OAAO,CAAC,IAAI,EAAE;gBAChB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACO,aAAa;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAEnD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC7C,MAAM,UAAU,GAAW,aAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAkB,CAAC;YAErE,IAAI,cAAc,GAAG,CAAC,CAAC;YACvB,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC;YAElD,OAAO,cAAc,GAAG,eAAe,EAAE,cAAc,EAAE,EAAE;gBACzD,MAAM,OAAO,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBACnD,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC9E,IAAI,YAAY,EAAE;oBAChB,MAAM;iBACP;aACF;YAED,IAAI,cAAc,KAAK,eAAe,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC;aAC3D;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;
|
|
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": "2.27.3-
|
|
3
|
+
"version": "2.27.3-rc-1706687185.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src"
|
|
@@ -17,16 +17,18 @@
|
|
|
17
17
|
"url": "git@github.com:opensumi/core.git"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@
|
|
20
|
+
"@furyjs/fury": "0.5.6-beta",
|
|
21
|
+
"@opensumi/events": "^0.1.0",
|
|
22
|
+
"@opensumi/ide-core-common": "2.27.3-rc-1706687185.0",
|
|
21
23
|
"@opensumi/vscode-jsonrpc": "^8.0.0-next.2",
|
|
22
24
|
"path-match": "^1.2.4",
|
|
23
|
-
"reconnecting-websocket": "^4.
|
|
24
|
-
"ws": "^8.
|
|
25
|
+
"reconnecting-websocket": "^4.4.0",
|
|
26
|
+
"ws": "^8.15.1"
|
|
25
27
|
},
|
|
26
28
|
"devDependencies": {
|
|
27
|
-
"@opensumi/ide-components": "2.27.3-
|
|
29
|
+
"@opensumi/ide-components": "2.27.3-rc-1706687185.0",
|
|
28
30
|
"@opensumi/ide-dev-tool": "1.3.1",
|
|
29
|
-
"mock-socket": "^9.
|
|
31
|
+
"@opensumi/mock-socket": "^9.3.1"
|
|
30
32
|
},
|
|
31
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "922ed9010fe3658f626401b559c5d1cae6afa760"
|
|
32
34
|
}
|
|
@@ -1,25 +1,32 @@
|
|
|
1
|
-
import ReconnectingWebSocket from 'reconnecting-websocket';
|
|
2
|
-
|
|
3
1
|
import { uuid } from '@opensumi/ide-core-common';
|
|
4
|
-
import { IReporterService, REPORT_NAME
|
|
2
|
+
import { IReporterService, REPORT_NAME } from '@opensumi/ide-core-common';
|
|
5
3
|
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { NetSocketConnection } from '../common/connection';
|
|
5
|
+
import { ReconnectingWebSocketConnection } from '../common/connection/drivers/reconnecting-websocket';
|
|
6
|
+
import { WSCloseInfo, ConnectionInfo } from '../common/utils';
|
|
7
|
+
import { WSChannel, stringify, parse } from '../common/ws-channel';
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Channel Handler in browser
|
|
11
|
+
*/
|
|
10
12
|
export class WSChannelHandler {
|
|
11
|
-
|
|
12
|
-
private
|
|
13
|
-
private channelCloseEventMap: Map<number | string, WSCloseInfo> = new Map();
|
|
13
|
+
private channelMap: Map<string, WSChannel> = new Map();
|
|
14
|
+
private channelCloseEventMap: Map<string, WSCloseInfo> = new Map();
|
|
14
15
|
private logger = console;
|
|
15
16
|
public clientId: string;
|
|
16
|
-
private heartbeatMessageTimer: NodeJS.
|
|
17
|
+
private heartbeatMessageTimer: NodeJS.Timeout | null;
|
|
17
18
|
private reporterService: IReporterService;
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
LOG_TAG = '[WSChannelHandler]';
|
|
21
|
+
|
|
22
|
+
constructor(
|
|
23
|
+
public connection: ReconnectingWebSocketConnection | NetSocketConnection,
|
|
24
|
+
logger: any,
|
|
25
|
+
clientId?: string,
|
|
26
|
+
) {
|
|
20
27
|
this.logger = logger || this.logger;
|
|
21
28
|
this.clientId = clientId || `CLIENT_ID_${uuid()}`;
|
|
22
|
-
this.
|
|
29
|
+
this.LOG_TAG = `[WSChannelHandler] [client-id:${this.clientId}]`;
|
|
23
30
|
}
|
|
24
31
|
// 为解决建立连接之后,替换成可落盘的 logger
|
|
25
32
|
replaceLogger(logger: any) {
|
|
@@ -30,21 +37,15 @@ export class WSChannelHandler {
|
|
|
30
37
|
setReporter(reporterService: IReporterService) {
|
|
31
38
|
this.reporterService = reporterService;
|
|
32
39
|
}
|
|
33
|
-
private clientMessage() {
|
|
34
|
-
const clientMsg: MessageString = stringify({
|
|
35
|
-
kind: 'client',
|
|
36
|
-
clientId: this.clientId,
|
|
37
|
-
});
|
|
38
|
-
this.connection.send(clientMsg);
|
|
39
|
-
}
|
|
40
40
|
private heartbeatMessage() {
|
|
41
41
|
if (this.heartbeatMessageTimer) {
|
|
42
42
|
clearTimeout(this.heartbeatMessageTimer);
|
|
43
43
|
}
|
|
44
44
|
this.heartbeatMessageTimer = global.setTimeout(() => {
|
|
45
45
|
const msg = stringify({
|
|
46
|
-
kind: '
|
|
46
|
+
kind: 'ping',
|
|
47
47
|
clientId: this.clientId,
|
|
48
|
+
id: this.clientId,
|
|
48
49
|
});
|
|
49
50
|
this.connection.send(msg);
|
|
50
51
|
this.heartbeatMessage();
|
|
@@ -52,74 +53,85 @@ export class WSChannelHandler {
|
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
public async initHandler() {
|
|
55
|
-
this.connection.
|
|
56
|
+
this.connection.onMessage((message) => {
|
|
56
57
|
// 一个心跳周期内如果有收到消息,则不需要再发送心跳
|
|
57
58
|
this.heartbeatMessage();
|
|
58
59
|
|
|
59
|
-
const msg = parse(
|
|
60
|
-
|
|
61
|
-
if (msg.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
60
|
+
const msg = parse(message);
|
|
61
|
+
|
|
62
|
+
if (msg.kind === 'pong') {
|
|
63
|
+
// ignore server2client pong message
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (!msg.id) {
|
|
68
|
+
// unknown message
|
|
69
|
+
this.logger.warn(this.LOG_TAG, 'unknown message', msg);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const channel = this.channelMap.get(msg.id);
|
|
74
|
+
if (channel) {
|
|
75
|
+
if (!channel.hasMessageListener()) {
|
|
76
|
+
// 要求前端发送初始化消息,但后端最先发送消息时,前端并未准备好
|
|
77
|
+
this.logger.error(this.LOG_TAG, 'channel not ready!', msg);
|
|
71
78
|
}
|
|
79
|
+
channel.handleMessage(msg);
|
|
80
|
+
} else {
|
|
81
|
+
this.logger.warn(this.LOG_TAG, `channel ${msg.id} not found`);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
const reopenExistsChannel = () => {
|
|
86
|
+
if (this.channelMap.size) {
|
|
87
|
+
this.channelMap.forEach((channel) => {
|
|
88
|
+
channel.onOpen(() => {
|
|
89
|
+
const closeInfo = this.channelCloseEventMap.get(channel.id);
|
|
90
|
+
this.reporterService &&
|
|
91
|
+
this.reporterService.point(REPORT_NAME.CHANNEL_RECONNECT, REPORT_NAME.CHANNEL_RECONNECT, closeInfo);
|
|
92
|
+
this.logger.log(this.LOG_TAG, `channel reconnect ${this.clientId}:${channel.channelPath}`);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
channel.open(channel.channelPath, this.clientId);
|
|
96
|
+
// 针对前端需要重新设置下后台状态的情况
|
|
97
|
+
channel.fireReopen();
|
|
98
|
+
});
|
|
72
99
|
}
|
|
73
100
|
};
|
|
74
|
-
await new Promise((resolve) => {
|
|
75
|
-
this.connection.
|
|
76
|
-
this.clientMessage();
|
|
101
|
+
await new Promise<void>((resolve) => {
|
|
102
|
+
if (this.connection.isOpen()) {
|
|
77
103
|
this.heartbeatMessage();
|
|
78
|
-
resolve(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
});
|
|
88
|
-
channel.open(channel.channelPath);
|
|
89
|
-
|
|
90
|
-
// 针对前端需要重新设置下后台状态的情况
|
|
91
|
-
if (channel.fireReOpen) {
|
|
92
|
-
channel.fireReOpen();
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
});
|
|
104
|
+
resolve();
|
|
105
|
+
reopenExistsChannel();
|
|
106
|
+
} else {
|
|
107
|
+
this.connection.onOpen(() => {
|
|
108
|
+
this.heartbeatMessage();
|
|
109
|
+
resolve();
|
|
110
|
+
reopenExistsChannel();
|
|
111
|
+
});
|
|
112
|
+
}
|
|
97
113
|
|
|
98
|
-
this.connection.
|
|
114
|
+
this.connection.onceClose((code, reason) => {
|
|
99
115
|
if (this.channelMap.size) {
|
|
100
116
|
this.channelMap.forEach((channel) => {
|
|
101
|
-
channel.close(
|
|
117
|
+
channel.close(code ?? 1000, reason ?? '');
|
|
102
118
|
});
|
|
103
119
|
}
|
|
104
120
|
});
|
|
105
121
|
});
|
|
106
122
|
}
|
|
107
|
-
private getChannelSend = (connection) => (content: string) => {
|
|
108
|
-
connection.send(content, (err: Error) => {
|
|
109
|
-
if (err) {
|
|
110
|
-
this.logger.warn(err);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
};
|
|
114
123
|
public async openChannel(channelPath: string) {
|
|
115
|
-
const channelSend = this.getChannelSend(this.connection);
|
|
116
124
|
const channelId = `${this.clientId}:${channelPath}`;
|
|
117
|
-
const channel = new WSChannel(
|
|
125
|
+
const channel = new WSChannel(this.connection, {
|
|
126
|
+
id: channelId,
|
|
127
|
+
logger: this.logger,
|
|
128
|
+
});
|
|
129
|
+
|
|
118
130
|
this.channelMap.set(channel.id, channel);
|
|
119
131
|
|
|
120
|
-
await new Promise((resolve) => {
|
|
132
|
+
await new Promise<void>((resolve) => {
|
|
121
133
|
channel.onOpen(() => {
|
|
122
|
-
resolve(
|
|
134
|
+
resolve();
|
|
123
135
|
});
|
|
124
136
|
channel.onClose((code: number, reason: string) => {
|
|
125
137
|
this.channelCloseEventMap.set(channelId, {
|
|
@@ -127,9 +139,9 @@ export class WSChannelHandler {
|
|
|
127
139
|
closeEvent: { code, reason },
|
|
128
140
|
connectInfo: (navigator as any).connection as ConnectionInfo,
|
|
129
141
|
});
|
|
130
|
-
this.logger.log('channel close: ', code, reason);
|
|
142
|
+
this.logger.log(this.LOG_TAG, 'channel close: ', code, reason);
|
|
131
143
|
});
|
|
132
|
-
channel.open(channelPath);
|
|
144
|
+
channel.open(channelPath, this.clientId);
|
|
133
145
|
});
|
|
134
146
|
|
|
135
147
|
return channel;
|