@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.
Files changed (158) hide show
  1. package/lib/browser/ws-channel-handler.d.ts +9 -7
  2. package/lib/browser/ws-channel-handler.d.ts.map +1 -1
  3. package/lib/browser/ws-channel-handler.js +65 -64
  4. package/lib/browser/ws-channel-handler.js.map +1 -1
  5. package/lib/common/connect.d.ts +6 -57
  6. package/lib/common/connect.d.ts.map +1 -1
  7. package/lib/common/connect.js +9 -168
  8. package/lib/common/connect.js.map +1 -1
  9. package/lib/common/connection/buffers.d.ts +55 -0
  10. package/lib/common/connection/buffers.d.ts.map +1 -0
  11. package/lib/common/connection/buffers.js +244 -0
  12. package/lib/common/connection/buffers.js.map +1 -0
  13. package/lib/common/connection/drivers/base.d.ts +9 -0
  14. package/lib/common/connection/drivers/base.d.ts.map +1 -0
  15. package/lib/common/connection/drivers/base.js +11 -0
  16. package/lib/common/connection/drivers/base.js.map +1 -0
  17. package/lib/common/connection/drivers/empty.d.ts +8 -0
  18. package/lib/common/connection/drivers/empty.d.ts.map +1 -0
  19. package/lib/common/connection/drivers/empty.js +21 -0
  20. package/lib/common/connection/drivers/empty.js.map +1 -0
  21. package/lib/common/connection/drivers/index.d.ts +6 -0
  22. package/lib/common/connection/drivers/index.d.ts.map +1 -0
  23. package/lib/common/connection/drivers/index.js +9 -0
  24. package/lib/common/connection/drivers/index.js.map +1 -0
  25. package/lib/common/connection/drivers/node-message-port.d.ts +12 -0
  26. package/lib/common/connection/drivers/node-message-port.d.ts.map +1 -0
  27. package/lib/common/connection/drivers/node-message-port.js +31 -0
  28. package/lib/common/connection/drivers/node-message-port.js.map +1 -0
  29. package/lib/common/connection/drivers/reconnecting-websocket.d.ts +15 -0
  30. package/lib/common/connection/drivers/reconnecting-websocket.d.ts.map +1 -0
  31. package/lib/common/connection/drivers/reconnecting-websocket.js +83 -0
  32. package/lib/common/connection/drivers/reconnecting-websocket.js.map +1 -0
  33. package/lib/common/connection/drivers/socket.d.ts +17 -0
  34. package/lib/common/connection/drivers/socket.d.ts.map +1 -0
  35. package/lib/common/connection/drivers/socket.js +56 -0
  36. package/lib/common/connection/drivers/socket.js.map +1 -0
  37. package/lib/common/connection/drivers/stream-decoder.d.ts +67 -0
  38. package/lib/common/connection/drivers/stream-decoder.d.ts.map +1 -0
  39. package/lib/common/connection/drivers/stream-decoder.js +171 -0
  40. package/lib/common/connection/drivers/stream-decoder.js.map +1 -0
  41. package/lib/common/connection/drivers/utils.d.ts +12 -0
  42. package/lib/common/connection/drivers/utils.d.ts.map +1 -0
  43. package/lib/common/connection/drivers/utils.js +49 -0
  44. package/lib/common/connection/drivers/utils.js.map +1 -0
  45. package/lib/common/connection/drivers/ws-websocket.d.ts +11 -0
  46. package/lib/common/connection/drivers/ws-websocket.d.ts.map +1 -0
  47. package/lib/common/connection/drivers/ws-websocket.js +31 -0
  48. package/lib/common/connection/drivers/ws-websocket.js.map +1 -0
  49. package/lib/common/connection/index.d.ts +2 -0
  50. package/lib/common/connection/index.d.ts.map +1 -0
  51. package/lib/common/connection/index.js +5 -0
  52. package/lib/common/connection/index.js.map +1 -0
  53. package/lib/common/connection/types.d.ts +7 -0
  54. package/lib/common/connection/types.d.ts.map +1 -0
  55. package/lib/common/connection/types.js +3 -0
  56. package/lib/common/connection/types.js.map +1 -0
  57. package/lib/common/constants.d.ts +2 -0
  58. package/lib/common/constants.d.ts.map +1 -0
  59. package/lib/common/constants.js +5 -0
  60. package/lib/common/constants.js.map +1 -0
  61. package/lib/common/{rpcProtocol.d.ts → ext-rpc-protocol.d.ts} +10 -11
  62. package/lib/common/ext-rpc-protocol.d.ts.map +1 -0
  63. package/lib/common/{rpcProtocol.js → ext-rpc-protocol.js} +22 -19
  64. package/lib/common/ext-rpc-protocol.js.map +1 -0
  65. package/lib/common/index.d.ts +2 -1
  66. package/lib/common/index.d.ts.map +1 -1
  67. package/lib/common/index.js +2 -1
  68. package/lib/common/index.js.map +1 -1
  69. package/lib/common/proxy/base.d.ts +22 -0
  70. package/lib/common/proxy/base.d.ts.map +1 -0
  71. package/lib/common/proxy/base.js +47 -0
  72. package/lib/common/proxy/base.js.map +1 -0
  73. package/lib/common/proxy/index.d.ts +8 -0
  74. package/lib/common/proxy/index.d.ts.map +1 -0
  75. package/lib/common/proxy/index.js +12 -0
  76. package/lib/common/proxy/index.js.map +1 -0
  77. package/lib/common/proxy/legacy.d.ts +23 -0
  78. package/lib/common/proxy/legacy.d.ts.map +1 -0
  79. package/lib/common/proxy/legacy.js +183 -0
  80. package/lib/common/proxy/legacy.js.map +1 -0
  81. package/lib/common/rpc-service/center.d.ts +20 -0
  82. package/lib/common/rpc-service/center.d.ts.map +1 -0
  83. package/lib/common/rpc-service/center.js +100 -0
  84. package/lib/common/rpc-service/center.js.map +1 -0
  85. package/lib/common/rpc-service/index.d.ts +3 -0
  86. package/lib/common/rpc-service/index.d.ts.map +1 -0
  87. package/lib/common/rpc-service/index.js +6 -0
  88. package/lib/common/rpc-service/index.js.map +1 -0
  89. package/lib/common/rpc-service/stub.d.ts +15 -0
  90. package/lib/common/rpc-service/stub.d.ts.map +1 -0
  91. package/lib/common/rpc-service/stub.js +48 -0
  92. package/lib/common/rpc-service/stub.js.map +1 -0
  93. package/lib/common/types.d.ts +15 -0
  94. package/lib/common/types.d.ts.map +1 -0
  95. package/lib/common/types.js +9 -0
  96. package/lib/common/types.js.map +1 -0
  97. package/lib/common/utils.d.ts +4 -2
  98. package/lib/common/utils.d.ts.map +1 -1
  99. package/lib/common/utils.js +32 -9
  100. package/lib/common/utils.js.map +1 -1
  101. package/lib/common/ws-channel.d.ts +104 -27
  102. package/lib/common/ws-channel.d.ts.map +1 -1
  103. package/lib/common/ws-channel.js +96 -27
  104. package/lib/common/ws-channel.js.map +1 -1
  105. package/lib/node/common-channel-handler.d.ts +18 -16
  106. package/lib/node/common-channel-handler.d.ts.map +1 -1
  107. package/lib/node/common-channel-handler.js +42 -59
  108. package/lib/node/common-channel-handler.js.map +1 -1
  109. package/lib/node/index.d.ts +0 -3
  110. package/lib/node/index.d.ts.map +1 -1
  111. package/lib/node/index.js +0 -5
  112. package/lib/node/index.js.map +1 -1
  113. package/lib/node/ws.d.ts +1 -1
  114. package/lib/node/ws.d.ts.map +1 -1
  115. package/lib/node/ws.js +2 -0
  116. package/lib/node/ws.js.map +1 -1
  117. package/package.json +9 -7
  118. package/src/browser/ws-channel-handler.ts +82 -70
  119. package/src/common/connect.ts +7 -193
  120. package/src/common/connection/buffers.ts +284 -0
  121. package/src/common/connection/drivers/base.ts +15 -0
  122. package/src/common/connection/drivers/empty.ts +19 -0
  123. package/src/common/connection/drivers/index.ts +5 -0
  124. package/src/common/connection/drivers/node-message-port.ts +33 -0
  125. package/src/common/connection/drivers/reconnecting-websocket.ts +86 -0
  126. package/src/common/connection/drivers/socket.ts +62 -0
  127. package/src/common/connection/drivers/stream-decoder.ts +196 -0
  128. package/src/common/connection/drivers/utils.ts +52 -0
  129. package/src/common/connection/drivers/ws-websocket.ts +31 -0
  130. package/src/common/connection/index.ts +1 -0
  131. package/src/common/connection/types.ts +7 -0
  132. package/src/common/constants.ts +1 -0
  133. package/src/common/{rpcProtocol.ts → ext-rpc-protocol.ts} +43 -31
  134. package/src/common/index.ts +2 -1
  135. package/src/common/proxy/base.ts +67 -0
  136. package/src/common/proxy/index.ts +10 -0
  137. package/src/common/proxy/legacy.ts +200 -0
  138. package/src/common/rpc-service/center.ts +124 -0
  139. package/src/common/rpc-service/index.ts +2 -0
  140. package/src/common/rpc-service/stub.ts +49 -0
  141. package/src/common/types.ts +17 -0
  142. package/src/common/utils.ts +31 -8
  143. package/src/common/ws-channel.ts +175 -48
  144. package/src/node/common-channel-handler.ts +68 -80
  145. package/src/node/index.ts +0 -5
  146. package/src/node/ws.ts +3 -1
  147. package/lib/common/proxy.d.ts +0 -47
  148. package/lib/common/proxy.d.ts.map +0 -1
  149. package/lib/common/proxy.js +0 -272
  150. package/lib/common/proxy.js.map +0 -1
  151. package/lib/common/rpcProtocol.d.ts.map +0 -1
  152. package/lib/common/rpcProtocol.js.map +0 -1
  153. package/lib/node/connect.d.ts +0 -4
  154. package/lib/node/connect.d.ts.map +0 -1
  155. package/lib/node/connect.js +0 -9
  156. package/lib/node/connect.js.map +0 -1
  157. package/src/common/proxy.ts +0 -303
  158. 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 path_match_1 = tslib_1.__importDefault(require("path-match"));
5
+ const path_to_regexp_1 = require("path-to-regexp");
6
6
  const ws_1 = tslib_1.__importDefault(require("ws"));
7
- const utils_1 = require("../common/utils");
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 = (connection, clientId, params) => {
29
- handler.connection = connection;
30
- handlerFn(connection, clientId, params);
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
- // 后台 Web 链接处理类
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.channelConnectionSend = (connection) => (content) => {
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
- hearbeat(connectionId, connection) {
90
+ heartbeat(connectionId, connection) {
100
91
  const timer = global.setTimeout(() => {
101
92
  connection.ping();
102
- // console.log(`connectionId ${connectionId} ping`);
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 connectionId;
101
+ let clientId;
112
102
  connection.on('message', (msg) => {
113
103
  let msgObj;
114
104
  try {
115
- msgObj = (0, utils_1.parse)(msg);
116
- // 心跳消息
117
- if (msgObj.kind === 'heartbeat') {
118
- connection.send((0, utils_1.stringify)(`heartbeat ${msgObj.clientId}`));
119
- }
120
- else if (msgObj.kind === 'client') {
121
- const clientId = msgObj.clientId;
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 channelId = msgObj.id; // CommonChannelHandler.channelId ++;
130
- const { path } = msgObj;
131
- this.logger.log(`Open a new connection channel ${channelId} with path ${path}`);
132
- // 生成 channel 对象
133
- const connectionSend = this.channelConnectionSend(connection);
134
- const channel = new ws_channel_1.WSChannel(connectionSend, channelId);
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, connectionId, params);
135
+ handler.handler(channel, clientId, params);
152
136
  }
153
137
  }
154
- channel.ready();
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.warn(e);
152
+ this.logger.error('handle connection message error', e);
169
153
  }
170
154
  });
171
- connection.on('close', () => {
172
- exports.commonChannelPathHandler.disposeConnectionClientId(connection, connectionId);
173
- if (this.heartbeatMap.has(connectionId)) {
174
- clearTimeout(this.heartbeatMap.get(connectionId));
175
- this.heartbeatMap.delete(connectionId);
176
- this.logger.verbose(`Clear heartbeat from channel ${connectionId}`);
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(connectionId) !== -1)
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.verbose(`Remove connection channel ${channel.id}`);
168
+ this.logger.log(`Remove connection channel ${channel.id}`);
184
169
  });
185
170
  });
186
171
  });
187
172
  }
188
- handleUpgrade(wsPathname, request, socket, head) {
189
- const routeResult = this.handlerRoute(wsPathname);
173
+ handleUpgrade(pathname, request, socket, head) {
174
+ const routeResult = this.handlerRoute(pathname);
190
175
  if (routeResult) {
191
- const wsServer = this.wsServer;
192
- wsServer.handleUpgrade(request, socket, head, (connection) => {
176
+ this.wsServer.handleUpgrade(request, socket, head, (connection) => {
193
177
  connection.routeParam = {
194
- pathname: wsPathname,
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":"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"}
1
+ {"version":3,"file":"common-channel-handler.js","sourceRoot":"","sources":["../../src/node/common-channel-handler.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAElG,cAAc,MAAM,CAAC;AACrB,cAAc,0BAA0B,CAAC;AACzC,cAAc,WAAW,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";;;;AAAA,iEAAkG;AAMzF,oGANA,0BAAmB,OAMA;AAAE,oGANA,0BAAmB,OAMA;AAJjD,+CAAqB;AACrB,mEAAyC;AACzC,oDAA0B"}
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(wsPathname: string, request: any, socket: any, head: any): boolean;
6
+ abstract handleUpgrade(pathname: string, request: any, socket: any, head: any): boolean;
7
7
  init?(): void;
8
8
  }
9
9
  export interface CommonChannelHandlerOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/node/ws.ts"],"names":[],"mappings":";AAAA,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,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO;IACzF,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;CAuBtB"}
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;
@@ -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;AAzFD,oDAyFC"}
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-next-1706520813.0",
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
- "@opensumi/ide-core-common": "2.27.3-next-1706520813.0",
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.2.0",
24
- "ws": "^8.9.0"
25
+ "reconnecting-websocket": "^4.4.0",
26
+ "ws": "^8.15.1"
25
27
  },
26
28
  "devDependencies": {
27
- "@opensumi/ide-components": "2.27.3-next-1706520813.0",
29
+ "@opensumi/ide-components": "2.27.3-rc-1706687185.0",
28
30
  "@opensumi/ide-dev-tool": "1.3.1",
29
- "mock-socket": "^9.0.2"
31
+ "@opensumi/mock-socket": "^9.3.1"
30
32
  },
31
- "gitHead": "ab440e0a62600ed6d6b577fc520d8b42db9d6394"
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, UrlProvider } from '@opensumi/ide-core-common';
2
+ import { IReporterService, REPORT_NAME } from '@opensumi/ide-core-common';
5
3
 
6
- import { stringify, parse, WSCloseInfo, ConnectionInfo } from '../common/utils';
7
- import { WSChannel, MessageString } from '../common/ws-channel';
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
- public connection: WebSocket;
12
- private channelMap: Map<number | string, WSChannel> = new Map();
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.Timer | null;
17
+ private heartbeatMessageTimer: NodeJS.Timeout | null;
17
18
  private reporterService: IReporterService;
18
19
 
19
- constructor(public wsPath: UrlProvider, logger: any, public protocols?: string[], clientId?: string) {
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.connection = new ReconnectingWebSocket(wsPath, protocols, {}) as WebSocket; // new WebSocket(wsPath, protocols);
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: 'heartbeat',
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.onmessage = (e) => {
56
+ this.connection.onMessage((message) => {
56
57
  // 一个心跳周期内如果有收到消息,则不需要再发送心跳
57
58
  this.heartbeatMessage();
58
59
 
59
- const msg = parse(e.data);
60
-
61
- if (msg.id) {
62
- const channel = this.channelMap.get(msg.id);
63
- if (channel) {
64
- if (msg.kind === 'data' && !(channel as any).fireMessage) {
65
- // 要求前端发送初始化消息,但后端最先发送消息时,前端并未准备好
66
- this.logger.error('channel not ready!', msg);
67
- }
68
- channel.handleMessage(msg);
69
- } else {
70
- this.logger.warn(`channel ${msg.id} not found`);
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.addEventListener('open', () => {
76
- this.clientMessage();
101
+ await new Promise<void>((resolve) => {
102
+ if (this.connection.isOpen()) {
77
103
  this.heartbeatMessage();
78
- resolve(undefined);
79
- // 重连 channel
80
- if (this.channelMap.size) {
81
- this.channelMap.forEach((channel) => {
82
- channel.onOpen(() => {
83
- const closeInfo = this.channelCloseEventMap.get(channel.id);
84
- this.reporterService &&
85
- this.reporterService.point(REPORT_NAME.CHANNEL_RECONNECT, REPORT_NAME.CHANNEL_RECONNECT, closeInfo);
86
- this.logger && this.logger.log(`channel reconnect ${this.clientId}:${channel.channelPath}`);
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.addEventListener('close', (event) => {
114
+ this.connection.onceClose((code, reason) => {
99
115
  if (this.channelMap.size) {
100
116
  this.channelMap.forEach((channel) => {
101
- channel.close(event.code, event.reason);
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(channelSend, channelId);
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(undefined);
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;