@opensumi/ide-connection 3.8.3-next-1741940731.0 → 3.8.3-next-1741942697.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/common/buffers/buffers.d.ts +3 -0
- package/lib/common/buffers/buffers.d.ts.map +1 -1
- package/lib/common/buffers/buffers.js +32 -1
- package/lib/common/buffers/buffers.js.map +1 -1
- package/lib/common/connection/drivers/frame-decoder.d.ts +9 -14
- package/lib/common/connection/drivers/frame-decoder.d.ts.map +1 -1
- package/lib/common/connection/drivers/frame-decoder.js +95 -39
- package/lib/common/connection/drivers/frame-decoder.js.map +1 -1
- package/lib/common/connection/drivers/reconnecting-websocket.d.ts +8 -2
- package/lib/common/connection/drivers/reconnecting-websocket.d.ts.map +1 -1
- package/lib/common/connection/drivers/reconnecting-websocket.js +56 -26
- package/lib/common/connection/drivers/reconnecting-websocket.js.map +1 -1
- package/lib/common/connection/drivers/stream.d.ts.map +1 -1
- package/lib/common/connection/drivers/stream.js +11 -4
- package/lib/common/connection/drivers/stream.js.map +1 -1
- package/lib/common/connection/drivers/ws-websocket.d.ts +8 -1
- package/lib/common/connection/drivers/ws-websocket.d.ts.map +1 -1
- package/lib/common/connection/drivers/ws-websocket.js +77 -7
- package/lib/common/connection/drivers/ws-websocket.js.map +1 -1
- package/lib/common/constants.d.ts +4 -0
- package/lib/common/constants.d.ts.map +1 -1
- package/lib/common/constants.js +5 -1
- package/lib/common/constants.js.map +1 -1
- package/lib/common/fury-extends/one-of.d.ts.map +1 -1
- package/lib/common/fury-extends/one-of.js +3 -0
- package/lib/common/fury-extends/one-of.js.map +1 -1
- package/lib/node/common-channel-handler.d.ts.map +1 -1
- package/lib/node/common-channel-handler.js +1 -2
- package/lib/node/common-channel-handler.js.map +1 -1
- package/package.json +6 -6
- package/src/common/buffers/buffers.ts +40 -0
- package/src/common/connection/drivers/frame-decoder.ts +103 -43
- package/src/common/connection/drivers/reconnecting-websocket.ts +66 -26
- package/src/common/connection/drivers/stream.ts +11 -4
- package/src/common/connection/drivers/ws-websocket.ts +93 -8
- package/src/common/constants.ts +5 -0
- package/src/common/fury-extends/one-of.ts +3 -0
- package/src/node/common-channel-handler.ts +1 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../../src/common/connection/drivers/stream.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../../src/common/connection/drivers/stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { IDisposable } from '@opensumi/ide-core-common';
|
|
2
2
|
import { BaseConnection } from './base';
|
|
3
|
+
import { LengthFieldBasedFrameDecoder } from './frame-decoder';
|
|
3
4
|
import type WebSocket from 'ws';
|
|
4
5
|
export declare class WSWebSocketConnection extends BaseConnection<Uint8Array> {
|
|
5
6
|
socket: WebSocket;
|
|
7
|
+
protected decoder: LengthFieldBasedFrameDecoder;
|
|
8
|
+
private static readonly MAX_QUEUE_SIZE;
|
|
9
|
+
private sendQueue;
|
|
10
|
+
private pendingSize;
|
|
11
|
+
private sending;
|
|
6
12
|
constructor(socket: WebSocket);
|
|
7
|
-
|
|
13
|
+
private processSendQueue;
|
|
14
|
+
send(data: Uint8Array): Promise<void>;
|
|
8
15
|
onMessage(cb: (data: Uint8Array) => void): IDisposable;
|
|
9
16
|
onceClose(cb: () => void): IDisposable;
|
|
10
17
|
isOpen(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-websocket.d.ts","sourceRoot":"","sources":["../../../../src/common/connection/drivers/ws-websocket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ws-websocket.d.ts","sourceRoot":"","sources":["../../../../src/common/connection/drivers/ws-websocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxD,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAQhC,qBAAa,qBAAsB,SAAQ,cAAc,CAAC,UAAU,CAAC;IAQhD,MAAM,EAAE,SAAS;IAPpC,SAAS,CAAC,OAAO,+BAAsC;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAQ;IAE9C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEL,MAAM,EAAE,SAAS;YAOtB,gBAAgB;IAkD9B,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrC,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,WAAW;IAGtD,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,WAAW;IAStC,MAAM;IAIN,OAAO,IAAI,IAAI;CAUhB"}
|
|
@@ -1,22 +1,84 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WSWebSocketConnection = void 0;
|
|
4
|
+
const constants_1 = require("../../constants");
|
|
4
5
|
const base_1 = require("./base");
|
|
6
|
+
const frame_decoder_1 = require("./frame-decoder");
|
|
5
7
|
class WSWebSocketConnection extends base_1.BaseConnection {
|
|
6
8
|
constructor(socket) {
|
|
7
9
|
super();
|
|
8
10
|
this.socket = socket;
|
|
11
|
+
this.decoder = new frame_decoder_1.LengthFieldBasedFrameDecoder();
|
|
12
|
+
this.sendQueue = [];
|
|
13
|
+
this.pendingSize = 0;
|
|
14
|
+
this.sending = false;
|
|
15
|
+
this.socket.on('message', (data) => {
|
|
16
|
+
this.decoder.push(data);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
async processSendQueue() {
|
|
20
|
+
if (this.sending) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
this.sending = true;
|
|
24
|
+
while (this.sendQueue.length > 0) {
|
|
25
|
+
const { data, resolve, reject } = this.sendQueue[0];
|
|
26
|
+
let handle = null;
|
|
27
|
+
try {
|
|
28
|
+
handle = frame_decoder_1.LengthFieldBasedFrameDecoder.construct(data).dumpAndOwn();
|
|
29
|
+
const packet = handle.get();
|
|
30
|
+
for (let i = 0; i < packet.byteLength; i += constants_1.chunkSize) {
|
|
31
|
+
if (!this.isOpen()) {
|
|
32
|
+
throw new Error('Connection closed while sending');
|
|
33
|
+
}
|
|
34
|
+
await new Promise((resolve, reject) => {
|
|
35
|
+
const chunk = packet.subarray(i, Math.min(i + constants_1.chunkSize, packet.byteLength));
|
|
36
|
+
this.socket.send(chunk, { binary: true }, (error) => {
|
|
37
|
+
if (error) {
|
|
38
|
+
reject(error);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
resolve();
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
resolve();
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
if (handle) {
|
|
53
|
+
try {
|
|
54
|
+
handle.dispose();
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.warn('[WSWebSocket] Error disposing handle:', error);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
this.pendingSize -= this.sendQueue[0].data.byteLength;
|
|
61
|
+
this.sendQueue.shift();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
this.sending = false;
|
|
9
65
|
}
|
|
10
66
|
send(data) {
|
|
11
|
-
|
|
67
|
+
return new Promise((resolve, reject) => {
|
|
68
|
+
// 检查队列大小限制
|
|
69
|
+
if (this.sendQueue.length >= WSWebSocketConnection.MAX_QUEUE_SIZE) {
|
|
70
|
+
reject(new Error('Send queue full'));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this.pendingSize += data.byteLength;
|
|
74
|
+
this.sendQueue.push({ data, resolve, reject });
|
|
75
|
+
this.processSendQueue().catch((error) => {
|
|
76
|
+
console.error('[WSWebSocket] Error processing queue:', error);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
12
79
|
}
|
|
13
80
|
onMessage(cb) {
|
|
14
|
-
this.
|
|
15
|
-
return {
|
|
16
|
-
dispose: () => {
|
|
17
|
-
this.socket.off('message', cb);
|
|
18
|
-
},
|
|
19
|
-
};
|
|
81
|
+
return this.decoder.onData(cb);
|
|
20
82
|
}
|
|
21
83
|
onceClose(cb) {
|
|
22
84
|
this.socket.once('close', cb);
|
|
@@ -31,7 +93,15 @@ class WSWebSocketConnection extends base_1.BaseConnection {
|
|
|
31
93
|
}
|
|
32
94
|
dispose() {
|
|
33
95
|
this.socket.removeAllListeners();
|
|
96
|
+
// 拒绝所有待发送的消息
|
|
97
|
+
while (this.sendQueue.length > 0) {
|
|
98
|
+
const { reject } = this.sendQueue.shift();
|
|
99
|
+
reject(new Error('Connection disposed'));
|
|
100
|
+
}
|
|
101
|
+
this.pendingSize = 0;
|
|
102
|
+
this.sending = false;
|
|
34
103
|
}
|
|
35
104
|
}
|
|
36
105
|
exports.WSWebSocketConnection = WSWebSocketConnection;
|
|
106
|
+
WSWebSocketConnection.MAX_QUEUE_SIZE = 1000; // 限制队列长度
|
|
37
107
|
//# sourceMappingURL=ws-websocket.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-websocket.js","sourceRoot":"","sources":["../../../../src/common/connection/drivers/ws-websocket.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ws-websocket.js","sourceRoot":"","sources":["../../../../src/common/connection/drivers/ws-websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,SAAS,QAAkB,CAAC"}
|
package/lib/common/constants.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.METHOD_NOT_REGISTERED = void 0;
|
|
3
|
+
exports.chunkSize = exports.METHOD_NOT_REGISTERED = void 0;
|
|
4
4
|
exports.METHOD_NOT_REGISTERED = '$$METHOD_NOT_REGISTERED';
|
|
5
|
+
/**
|
|
6
|
+
* 分片大小, 1MB
|
|
7
|
+
*/
|
|
8
|
+
exports.chunkSize = 1 * 1024 * 1024;
|
|
5
9
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,yBAAyB,CAAC;AAE/D;;GAEG;AACU,QAAA,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"one-of.d.ts","sourceRoot":"","sources":["../../../src/common/fury-extends/one-of.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,eAAe,EAAE,MAAM,cAAc,CAAC;AAGlF,OAAO,EAAE,iBAAiB,EAAe,MAAM,UAAU,CAAC;AAE1D,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAIvD,eAAO,MAAM,KAAK,YACP,CACP,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,CAChB,YACS,iBAAiB;yBAoBC,UAAU;
|
|
1
|
+
{"version":3,"file":"one-of.d.ts","sourceRoot":"","sources":["../../../src/common/fury-extends/one-of.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,eAAe,EAAE,MAAM,cAAc,CAAC;AAGlF,OAAO,EAAE,iBAAiB,EAAe,MAAM,UAAU,CAAC;AAE1D,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAIvD,eAAO,MAAM,KAAK,YACP,CACP,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,CAChB,YACS,iBAAiB;yBAoBC,UAAU;mBAuChB,QAAQ;CAyC/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"one-of.js","sourceRoot":"","sources":["../../../src/common/fury-extends/one-of.ts"],"names":[],"mappings":";;;AACA,mDAA+D;AAE/D,qCAA0D;AAI1D,MAAM,GAAG,GAAG,CAAC,CAAC;AAEP,MAAM,KAAK,GAAG,CACnB,OASC,EACD,OAA2B,EAC3B,EAAE;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,IAAA,oBAAW,GAAE,CAAC;IAC1B,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEzC,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,GAAG,CAAiB,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAa,CAAC;IAEzC,MAAM,WAAW,GAAG,EAA4B,CAAC;IAEjD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAI,MAAgC,CAAC,OAAO,CAAC,GAAG,CAAC;QAC3D,WAAW,CAAC,CAAC,CAAC,GAAG,IAAA,wBAAkB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAChB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,CAAC,KAAiB,EAAE,EAAE;QACxC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAE3B,IAAI,CAAM,CAAC;QACX,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;
|
|
1
|
+
{"version":3,"file":"one-of.js","sourceRoot":"","sources":["../../../src/common/fury-extends/one-of.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-channel-handler.d.ts","sourceRoot":"","sources":["../../src/node/common-channel-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,MAAM,gBAAgB,CAAC;AACtD,OAAO,SAAS,MAAM,IAAI,CAAC;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAE9F,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAErE,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,wBAAyB,YAAW,gBAAgB;IAM1F,SAAS,CAAC,wBAAwB,EAAE,wBAAwB;IAE5D,OAAO,CAAC,OAAO;IAPjB,OAAO,CAAC,QAAQ,CAAmB;IACnC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC;gBAGpC,SAAS,EAAE,MAAM,EACP,wBAAwB,EAAE,wBAAwB,EAC5D,MAAM,GAAE,OAAiB,EACjB,OAAO,GAAE,2BAAgC;IAOnD,WAAW,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAIpD,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"common-channel-handler.d.ts","sourceRoot":"","sources":["../../src/node/common-channel-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,MAAM,gBAAgB,CAAC;AACtD,OAAO,SAAS,MAAM,IAAI,CAAC;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAE9F,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAErE,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,wBAAyB,YAAW,gBAAgB;IAM1F,SAAS,CAAC,wBAAwB,EAAE,wBAAwB;IAE5D,OAAO,CAAC,OAAO;IAPjB,OAAO,CAAC,QAAQ,CAAmB;IACnC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC;gBAGpC,SAAS,EAAE,MAAM,EACP,wBAAwB,EAAE,wBAAwB,EAC5D,MAAM,GAAE,OAAiB,EACjB,OAAO,GAAE,2BAAgC;IAOnD,WAAW,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAIpD,OAAO,CAAC,YAAY;IAWb,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO;CAgBtF"}
|
|
@@ -27,8 +27,7 @@ class CommonChannelHandler extends server_handler_1.BaseCommonChannelHandler {
|
|
|
27
27
|
...this.options.wsServerOptions,
|
|
28
28
|
});
|
|
29
29
|
this.wsServer.on('connection', (connection) => {
|
|
30
|
-
|
|
31
|
-
this.receiveConnection(wsConnection);
|
|
30
|
+
this.receiveConnection(new connection_1.WSWebSocketConnection(connection));
|
|
32
31
|
});
|
|
33
32
|
}
|
|
34
33
|
handleUpgrade(pathname, request, socket, head) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-channel-handler.js","sourceRoot":"","sources":["../../src/node/common-channel-handler.ts"],"names":[],"mappings":";;;;AAAA,mDAAsD;AACtD,oDAA2B;AAG3B,qDAA6D;AAC7D,6DAA8F;AAU9F;;GAEG;AACH,MAAa,oBAAqB,SAAQ,yCAAwB;IAIhE,YACE,SAAiB,EACP,wBAAkD,EAC5D,SAAkB,OAAO,EACjB,UAAuC,EAAE;QAEjD,KAAK,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,CAAC,CAAC;QAJtD,6BAAwB,GAAxB,wBAAwB,CAA0B;QAEpD,YAAO,GAAP,OAAO,CAAkC;QAGjD,IAAI,CAAC,YAAY,GAAG,IAAA,sBAAK,EAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,WAAW,CAAC,UAAiC;QAC3C,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAS,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,IAAI;YACd,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,UAAqB,EAAE,EAAE;YACvD,
|
|
1
|
+
{"version":3,"file":"common-channel-handler.js","sourceRoot":"","sources":["../../src/node/common-channel-handler.ts"],"names":[],"mappings":";;;;AAAA,mDAAsD;AACtD,oDAA2B;AAG3B,qDAA6D;AAC7D,6DAA8F;AAU9F;;GAEG;AACH,MAAa,oBAAqB,SAAQ,yCAAwB;IAIhE,YACE,SAAiB,EACP,wBAAkD,EAC5D,SAAkB,OAAO,EACjB,UAAuC,EAAE;QAEjD,KAAK,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,CAAC,CAAC;QAJtD,6BAAwB,GAAxB,wBAAwB,CAA0B;QAEpD,YAAO,GAAP,OAAO,CAAkC;QAGjD,IAAI,CAAC,YAAY,GAAG,IAAA,sBAAK,EAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,WAAW,CAAC,UAAiC;QAC3C,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAS,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,IAAI;YACd,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,UAAqB,EAAE,EAAE;YACvD,IAAI,CAAC,iBAAiB,CAAC,IAAI,kCAAqB,CAAC,UAAU,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,aAAa,CAAC,QAAgB,EAAE,OAAY,EAAE,MAAW,EAAE,IAAS;QACzE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE;gBAC/D,UAAkC,CAAC,UAAU,GAAG;oBAC/C,QAAQ;iBACT,CAAC;gBAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA9CD,oDA8CC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-connection",
|
|
3
|
-
"version": "3.8.3-next-
|
|
3
|
+
"version": "3.8.3-next-1741942697.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src"
|
|
@@ -19,17 +19,17 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@furyjs/fury": "0.5.9-beta",
|
|
21
21
|
"@opensumi/events": "^1.0.0",
|
|
22
|
-
"@opensumi/ide-core-common": "3.8.3-next-
|
|
23
|
-
"@opensumi/ide-utils": "3.8.3-next-
|
|
22
|
+
"@opensumi/ide-core-common": "3.8.3-next-1741942697.0",
|
|
23
|
+
"@opensumi/ide-utils": "3.8.3-next-1741942697.0",
|
|
24
24
|
"@opensumi/reconnecting-websocket": "^4.4.0",
|
|
25
25
|
"@opensumi/vscode-jsonrpc": "^8.0.0-next.2",
|
|
26
26
|
"path-to-regexp": "^6.2.1",
|
|
27
27
|
"ws": "^8.16.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@opensumi/ide-components": "3.8.3-next-
|
|
31
|
-
"@opensumi/ide-dev-tool": "3.8.3-next-
|
|
30
|
+
"@opensumi/ide-components": "3.8.3-next-1741942697.0",
|
|
31
|
+
"@opensumi/ide-dev-tool": "3.8.3-next-1741942697.0",
|
|
32
32
|
"@opensumi/mock-socket": "^9.3.1"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "3111e67ecae517aa86590e8cb6c58c549e090fff"
|
|
35
35
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
export const emptyBuffer = new Uint8Array(0);
|
|
8
|
+
export const buffer4Capacity = new Uint8Array(4);
|
|
8
9
|
|
|
9
10
|
export function copy(
|
|
10
11
|
source: Uint8Array,
|
|
@@ -72,6 +73,39 @@ export class Buffers {
|
|
|
72
73
|
return target;
|
|
73
74
|
}
|
|
74
75
|
|
|
76
|
+
slice4(start: number) {
|
|
77
|
+
let end = start + 4;
|
|
78
|
+
const buffers = this.buffers;
|
|
79
|
+
|
|
80
|
+
if (end > this.size) {
|
|
81
|
+
end = this.size;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (start >= end) {
|
|
85
|
+
return emptyBuffer;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
let startBytes = 0;
|
|
89
|
+
let si = 0;
|
|
90
|
+
for (; si < buffers.length && startBytes + buffers[si].length <= start; si++) {
|
|
91
|
+
startBytes += buffers[si].length;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const target = buffer4Capacity;
|
|
95
|
+
|
|
96
|
+
let ti = 0;
|
|
97
|
+
for (let ii = si; ti < end - start && ii < buffers.length; ii++) {
|
|
98
|
+
const len = buffers[ii].length;
|
|
99
|
+
|
|
100
|
+
const _start = ti === 0 ? start - startBytes : 0;
|
|
101
|
+
const _end = ti + len >= end - start ? Math.min(_start + (end - start) - ti, len) : len;
|
|
102
|
+
copy(buffers[ii], target, ti, _start, _end);
|
|
103
|
+
ti += _end - _start;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return target;
|
|
107
|
+
}
|
|
108
|
+
|
|
75
109
|
pos(i: number): { buf: number; offset: number } {
|
|
76
110
|
if (i < 0 || i >= this.size) {
|
|
77
111
|
throw new Error(`out of range, ${i} not in [0, ${this.size})`);
|
|
@@ -268,6 +302,12 @@ export class Cursor {
|
|
|
268
302
|
return buffers;
|
|
269
303
|
}
|
|
270
304
|
|
|
305
|
+
read4() {
|
|
306
|
+
const buffers = this.buffers.slice4(this.offset);
|
|
307
|
+
this.skip(4);
|
|
308
|
+
return buffers;
|
|
309
|
+
}
|
|
310
|
+
|
|
271
311
|
skip(n: number) {
|
|
272
312
|
let count = 0;
|
|
273
313
|
while (this.chunkIndex < this.buffers.buffers.length) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
1
2
|
import { BinaryWriter } from '@furyjs/fury/dist/lib/writer';
|
|
2
3
|
|
|
3
|
-
import {
|
|
4
|
+
import { MaybeNull, readUInt32LE, setImmediate } from '@opensumi/ide-core-common';
|
|
4
5
|
|
|
5
6
|
import { Buffers } from '../../buffers/buffers';
|
|
6
7
|
|
|
@@ -9,30 +10,40 @@ import { Buffers } from '../../buffers/buffers';
|
|
|
9
10
|
*/
|
|
10
11
|
export const indicator = new Uint8Array([0x0d, 0x0a, 0x0d, 0x0a]);
|
|
11
12
|
|
|
13
|
+
/**
|
|
14
|
+
* The number of bytes in the length field.
|
|
15
|
+
*
|
|
16
|
+
* How many bytes are used to represent data length.
|
|
17
|
+
*
|
|
18
|
+
* For example, if the length field is 4 bytes, then the maximum length of the data is 2^32 = 4GB
|
|
19
|
+
*/
|
|
20
|
+
const lengthFieldLength = 4;
|
|
21
|
+
|
|
12
22
|
/**
|
|
13
23
|
* sticky packet unpacking problems are generally problems at the transport layer.
|
|
14
24
|
* we use a length field to represent the length of the data, and then read the data according to the length
|
|
15
25
|
*/
|
|
16
26
|
export class LengthFieldBasedFrameDecoder {
|
|
17
|
-
|
|
18
|
-
|
|
27
|
+
private static readonly MAX_ITERATIONS = 50;
|
|
28
|
+
|
|
29
|
+
private _onDataListener: MaybeNull<(data: Uint8Array) => void>;
|
|
30
|
+
onData(listener: (data: Uint8Array) => void) {
|
|
31
|
+
this._onDataListener = listener;
|
|
32
|
+
return {
|
|
33
|
+
dispose: () => {
|
|
34
|
+
this._onDataListener = null;
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
19
38
|
|
|
20
39
|
protected buffers = new Buffers();
|
|
21
40
|
protected cursor = this.buffers.cursor();
|
|
41
|
+
private processingPromise: Promise<void> | null = null;
|
|
22
42
|
|
|
23
43
|
protected contentLength = -1;
|
|
24
44
|
|
|
25
45
|
protected state = 0;
|
|
26
46
|
|
|
27
|
-
/**
|
|
28
|
-
* The number of bytes in the length field.
|
|
29
|
-
*
|
|
30
|
-
* How many bytes are used to represent data length.
|
|
31
|
-
*
|
|
32
|
-
* For example, if the length field is 4 bytes, then the maximum length of the data is 2^32 = 4GB
|
|
33
|
-
*/
|
|
34
|
-
lengthFieldLength = 4;
|
|
35
|
-
|
|
36
47
|
reset() {
|
|
37
48
|
this.contentLength = -1;
|
|
38
49
|
this.state = 0;
|
|
@@ -41,38 +52,81 @@ export class LengthFieldBasedFrameDecoder {
|
|
|
41
52
|
|
|
42
53
|
push(chunk: Uint8Array): void {
|
|
43
54
|
this.buffers.push(chunk);
|
|
44
|
-
let done = false;
|
|
45
55
|
|
|
46
|
-
|
|
47
|
-
|
|
56
|
+
// 确保同一时间只有一个处理过程
|
|
57
|
+
if (!this.processingPromise) {
|
|
58
|
+
this.processingPromise = this.processBuffers().finally(() => {
|
|
59
|
+
this.processingPromise = null;
|
|
60
|
+
});
|
|
48
61
|
}
|
|
49
62
|
}
|
|
50
63
|
|
|
51
|
-
|
|
52
|
-
|
|
64
|
+
private async processBuffers(): Promise<void> {
|
|
65
|
+
let iterations = 0;
|
|
66
|
+
let hasMoreData = false;
|
|
67
|
+
|
|
68
|
+
do {
|
|
69
|
+
hasMoreData = false;
|
|
70
|
+
while (iterations < LengthFieldBasedFrameDecoder.MAX_ITERATIONS) {
|
|
71
|
+
if (this.buffers.byteLength === 0) {
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const result = await this.readFrame();
|
|
76
|
+
if (result === true) {
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
iterations++;
|
|
81
|
+
if (iterations % 10 === 0) {
|
|
82
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// 检查剩余数据
|
|
87
|
+
if (this.buffers.byteLength > 0) {
|
|
88
|
+
hasMoreData = true;
|
|
89
|
+
// 异步继续处理,避免阻塞
|
|
90
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
91
|
+
iterations = 0; // 重置迭代计数器
|
|
92
|
+
}
|
|
93
|
+
} while (hasMoreData);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
protected async readFrame(): Promise<boolean> {
|
|
97
|
+
try {
|
|
98
|
+
const found = this.readLengthField();
|
|
99
|
+
if (!found) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
53
102
|
|
|
54
|
-
if (found) {
|
|
55
103
|
const start = this.cursor.offset;
|
|
56
104
|
const end = start + this.contentLength;
|
|
57
105
|
|
|
106
|
+
if (end > this.buffers.byteLength) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
|
|
58
110
|
const binary = this.buffers.slice(start, end);
|
|
59
111
|
|
|
60
|
-
|
|
112
|
+
// 立即清理已处理的数据
|
|
113
|
+
this.buffers.splice(0, end);
|
|
114
|
+
this.reset();
|
|
61
115
|
|
|
62
|
-
if (this.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
116
|
+
if (this._onDataListener) {
|
|
117
|
+
try {
|
|
118
|
+
await Promise.resolve().then(() => this._onDataListener?.(binary));
|
|
119
|
+
} catch (error) {
|
|
120
|
+
console.error('[Frame Decoder] Error in data listener:', error);
|
|
121
|
+
}
|
|
68
122
|
}
|
|
69
123
|
|
|
70
|
-
|
|
71
|
-
|
|
124
|
+
return false;
|
|
125
|
+
} catch (error) {
|
|
126
|
+
console.error('[Frame Decoder] Error processing frame:', error);
|
|
72
127
|
this.reset();
|
|
128
|
+
return true;
|
|
73
129
|
}
|
|
74
|
-
|
|
75
|
-
return true;
|
|
76
130
|
}
|
|
77
131
|
|
|
78
132
|
protected readLengthField() {
|
|
@@ -93,13 +147,13 @@ export class LengthFieldBasedFrameDecoder {
|
|
|
93
147
|
}
|
|
94
148
|
|
|
95
149
|
if (this.contentLength === -1) {
|
|
96
|
-
if (this.cursor.offset +
|
|
150
|
+
if (this.cursor.offset + lengthFieldLength > bufferLength) {
|
|
97
151
|
// Not enough data yet, wait for more data
|
|
98
152
|
return false;
|
|
99
153
|
}
|
|
100
154
|
|
|
101
155
|
// read the content length
|
|
102
|
-
const buf = this.cursor.
|
|
156
|
+
const buf = this.cursor.read4();
|
|
103
157
|
// fury writer use little endian
|
|
104
158
|
this.contentLength = readUInt32LE(buf, 0);
|
|
105
159
|
}
|
|
@@ -118,12 +172,12 @@ export class LengthFieldBasedFrameDecoder {
|
|
|
118
172
|
let result = iter.next();
|
|
119
173
|
while (!result.done) {
|
|
120
174
|
switch (result.value) {
|
|
121
|
-
case 0x0d:
|
|
175
|
+
case 0x0d: // \r
|
|
122
176
|
switch (this.state) {
|
|
123
177
|
case 0:
|
|
124
178
|
this.state = 1;
|
|
125
179
|
break;
|
|
126
|
-
case 2:
|
|
180
|
+
case 2: // 第二个 \r
|
|
127
181
|
this.state = 3;
|
|
128
182
|
break;
|
|
129
183
|
default:
|
|
@@ -131,12 +185,12 @@ export class LengthFieldBasedFrameDecoder {
|
|
|
131
185
|
break;
|
|
132
186
|
}
|
|
133
187
|
break;
|
|
134
|
-
case 0x0a:
|
|
188
|
+
case 0x0a: // \n
|
|
135
189
|
switch (this.state) {
|
|
136
190
|
case 1:
|
|
137
191
|
this.state = 2;
|
|
138
192
|
break;
|
|
139
|
-
case 3:
|
|
193
|
+
case 3: // 第二个 \n
|
|
140
194
|
this.state = 4;
|
|
141
195
|
iter.return();
|
|
142
196
|
break;
|
|
@@ -154,17 +208,23 @@ export class LengthFieldBasedFrameDecoder {
|
|
|
154
208
|
}
|
|
155
209
|
|
|
156
210
|
dispose() {
|
|
157
|
-
this.
|
|
211
|
+
this._onDataListener = null;
|
|
158
212
|
this.buffers.dispose();
|
|
213
|
+
this.reset();
|
|
159
214
|
}
|
|
160
215
|
|
|
161
|
-
static writer = BinaryWriter({});
|
|
162
|
-
|
|
163
216
|
static construct(content: Uint8Array) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
217
|
+
// 每次都创建新的 writer,避免所有权问题
|
|
218
|
+
const writer = BinaryWriter({});
|
|
219
|
+
|
|
220
|
+
try {
|
|
221
|
+
writer.buffer(indicator);
|
|
222
|
+
writer.uint32(content.byteLength);
|
|
223
|
+
writer.buffer(content);
|
|
224
|
+
return writer;
|
|
225
|
+
} catch (error) {
|
|
226
|
+
console.warn('[Frame Decoder] Error constructing frame:', error);
|
|
227
|
+
throw error;
|
|
228
|
+
}
|
|
169
229
|
}
|
|
170
230
|
}
|