@cjwddz/mirror 2.0.11 → 2.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,24 +1,31 @@
1
1
  /**
2
2
  * HTTP 隧道客户端
3
- * 接收来自服务端的 HTTP 请求,转发到本地服务,并将响应返回
3
+ * 支持多路隧道连接;协议为二进制控制帧 + 数据帧
4
4
  */
5
5
  import http from 'http';
6
6
  import https from 'https';
7
7
  import { WebSocket } from 'ws';
8
- import { isHttpTunnelMessage, decodeBodyChunkFrame, encodeBodyChunkFrame, isBodyChunkFrame, BODY_CHUNK_REQUEST, BODY_CHUNK_RESPONSE, } from './http-tunnel-protocol.js';
8
+ import { isBinaryFrame, decodeBinaryFrame, encodeBinaryControlFrame, encodeBinaryDataFrame, FRAME_REQUEST_START, FRAME_REQUEST_END, FRAME_RESPONSE_START, FRAME_RESPONSE_END, FRAME_TUNNEL_ERROR, FRAME_WS_UPGRADE, FRAME_WS_DATA, FRAME_WS_CLOSE, FRAME_BODY_REQUEST, FRAME_BODY_RESPONSE, } from './http-tunnel-protocol.js';
9
+ const RESPONSE_CHUNK_BUFFER_SIZE = 16 * 1024;
9
10
  export class HttpTunnelClient {
10
11
  targetUrl;
11
- tunnelWs;
12
+ tunnelWss;
12
13
  getTarget;
13
14
  httpAgent;
14
15
  httpsAgent;
15
- wsClients = new Map(); // requestId -> WebSocket client
16
+ wsClients = new Map();
16
17
  pendingStreamRequests = new Map();
18
+ /** WS 请求对应的隧道连接,用于回写 WS_DATA/WS_CLOSE */
19
+ tunnelWsByRequestId = new Map();
17
20
  constructor(options) {
18
21
  this.targetUrl = new URL(options.targetUrl ?? 'http://localhost');
19
- this.tunnelWs = options.tunnelWs;
22
+ this.tunnelWss =
23
+ options.tunnelWss && options.tunnelWss.length > 0
24
+ ? options.tunnelWss
25
+ : options.tunnelWs
26
+ ? [options.tunnelWs]
27
+ : [];
20
28
  this.getTarget = options.getTarget ?? null;
21
- // 创建 HTTP 客户端代理
22
29
  this.httpAgent = new http.Agent({
23
30
  keepAlive: true,
24
31
  keepAliveMsecs: 1000,
@@ -30,101 +37,87 @@ export class HttpTunnelClient {
30
37
  keepAliveMsecs: 1000,
31
38
  maxSockets: Infinity,
32
39
  maxFreeSockets: 256,
33
- rejectUnauthorized: false, // 允许自签名证书
34
- });
35
- // 处理隧道消息
36
- this.tunnelWs.on('message', (data) => {
37
- this.handleTunnelMessage(data);
38
- });
39
- // 处理隧道错误
40
- this.tunnelWs.on('error', (error) => {
41
- console.error('[HTTP Tunnel Client] Tunnel error:', error);
40
+ rejectUnauthorized: false,
42
41
  });
43
- // 处理隧道关闭
44
- this.tunnelWs.on('close', () => {
45
- console.log('[HTTP Tunnel Client] Tunnel closed');
46
- // 关闭所有 WebSocket 客户端
47
- this.wsClients.forEach((ws) => ws.close());
48
- this.wsClients.clear();
42
+ this.tunnelWss.forEach((ws) => {
43
+ ws.on('message', (data) => this.handleTunnelMessage(data, ws));
44
+ ws.on('error', (error) => console.error('[HTTP Tunnel Client] Tunnel error:', error));
45
+ ws.on('close', () => {
46
+ this.wsClients.forEach((w) => w.close());
47
+ this.wsClients.clear();
48
+ this.tunnelWsByRequestId.clear();
49
+ });
49
50
  });
50
51
  }
51
- /**
52
- * 处理隧道消息(支持二进制 body 帧与 JSON 控制消息)
53
- */
54
- handleTunnelMessage(data) {
52
+ handleTunnelMessage(data, tunnelWs) {
55
53
  const buf = typeof data === 'string' ? Buffer.from(data, 'utf8') : data;
56
- if (Buffer.isBuffer(buf) && buf.length >= 1 && isBodyChunkFrame(buf)) {
57
- const decoded = decodeBodyChunkFrame(buf, BODY_CHUNK_REQUEST);
58
- if (decoded)
59
- this.handleRequestBodyChunk(decoded.requestId, decoded.payload);
54
+ if (buf.length < 1)
60
55
  return;
61
- }
62
- try {
63
- const messageStr = typeof data === 'string' ? data : data.toString('utf8');
64
- const message = JSON.parse(messageStr);
65
- if (!isHttpTunnelMessage(message)) {
66
- console.warn('[HTTP Tunnel Client] Invalid message received');
67
- return;
56
+ if (buf[0] === 0x7b) {
57
+ try {
58
+ const msg = JSON.parse(buf.toString('utf8'));
59
+ if (msg.type === 'WELCOME')
60
+ return;
68
61
  }
69
- switch (message.type) {
70
- case 'WELCOME':
71
- break;
72
- case 'HTTP_REQUEST_START':
73
- this.handleHttpRequestStart(message);
74
- break;
75
- case 'HTTP_REQUEST_CHUNK':
76
- this.handleHttpRequestChunk(message);
77
- break;
78
- case 'HTTP_REQUEST_END':
79
- this.handleHttpRequestEnd(message);
80
- break;
81
- case 'WS_UPGRADE':
82
- this.handleWsUpgrade(message);
83
- break;
84
- case 'WS_DATA':
85
- this.handleWsData(message);
86
- break;
87
- case 'WS_CLOSE':
88
- this.handleWsClose(message);
89
- break;
90
- default:
91
- console.warn('[HTTP Tunnel Client] Unexpected message type:', message.type);
62
+ catch {
63
+ // ignore
92
64
  }
93
65
  }
94
- catch (error) {
95
- console.error('[HTTP Tunnel Client] Error handling tunnel message:', error);
66
+ if (!isBinaryFrame(buf))
67
+ return;
68
+ const decoded = decodeBinaryFrame(buf);
69
+ if (!decoded)
70
+ return;
71
+ const { type, requestId, payload, payloadJson } = decoded;
72
+ switch (type) {
73
+ case FRAME_REQUEST_START: {
74
+ const method = payloadJson?.method ?? 'GET';
75
+ const url = payloadJson?.url ?? '/';
76
+ const headers = payloadJson?.headers ?? {};
77
+ const target = payloadJson?.target;
78
+ this.handleHttpRequestStart(requestId, method, url, headers, target, tunnelWs);
79
+ break;
80
+ }
81
+ case FRAME_BODY_REQUEST:
82
+ this.handleRequestBodyChunk(requestId, payload, tunnelWs);
83
+ break;
84
+ case FRAME_REQUEST_END:
85
+ this.handleHttpRequestEnd(requestId, tunnelWs);
86
+ break;
87
+ case FRAME_WS_UPGRADE: {
88
+ const url = payloadJson?.url ?? '/';
89
+ const headers = payloadJson?.headers ?? {};
90
+ this.handleWsUpgrade(requestId, url, headers, tunnelWs);
91
+ break;
92
+ }
93
+ case FRAME_WS_DATA:
94
+ this.handleWsData(requestId, payload);
95
+ break;
96
+ case FRAME_WS_CLOSE:
97
+ this.handleWsClose(requestId, payloadJson);
98
+ break;
99
+ default:
100
+ break;
96
101
  }
97
102
  }
98
- handleRequestBodyChunk(requestId, payload) {
103
+ handleRequestBodyChunk(requestId, payload, _tunnelWs) {
99
104
  const pending = this.pendingStreamRequests.get(requestId);
100
- if (pending?.req && !pending.req.destroyed) {
105
+ if (pending?.req && !pending.req.destroyed)
101
106
  pending.req.write(payload);
102
- }
103
107
  }
104
- handleHttpRequestChunk(message) {
105
- const pending = this.pendingStreamRequests.get(message.requestId);
106
- if (pending?.req && !pending.req.destroyed && message.data) {
107
- pending.req.write(Buffer.from(message.data, 'base64'));
108
- }
109
- }
110
- handleHttpRequestEnd(message) {
111
- const pending = this.pendingStreamRequests.get(message.requestId);
108
+ handleHttpRequestEnd(requestId, _tunnelWs) {
109
+ const pending = this.pendingStreamRequests.get(requestId);
112
110
  if (pending?.req && !pending.req.destroyed) {
113
- this.pendingStreamRequests.delete(message.requestId);
111
+ this.pendingStreamRequests.delete(requestId);
114
112
  pending.req.end();
115
113
  }
116
114
  }
117
- /** 目标未写协议时拼成完整 URL;默认 http(本机服务多为 HTTP,入口 HTTPS 由 Nginx 终结) */
118
115
  normalizeTargetUrl(resolved) {
119
116
  if (resolved.startsWith('http://') || resolved.startsWith('https://'))
120
117
  return resolved;
121
118
  return `http://${resolved}`;
122
119
  }
123
- /**
124
- * 流式:处理 HTTP 请求开始(创建本地请求,不写 body,等 CHUNK/END)
125
- */
126
- handleHttpRequestStart(message) {
127
- const { requestId, method, url: requestUrl, headers, target } = message;
120
+ handleHttpRequestStart(requestId, method, requestUrl, headers, target, tunnelWs) {
128
121
  let targetUrlStr;
129
122
  if (target) {
130
123
  targetUrlStr = target.startsWith('http') ? target : `http://${target}`;
@@ -135,14 +128,12 @@ export class HttpTunnelClient {
135
128
  const pathname = new URL(requestUrl || '/', `http://${host}`).pathname;
136
129
  const resolved = this.getTarget(domain, pathname);
137
130
  if (resolved == null) {
138
- this.tunnelWs.send(JSON.stringify({
139
- type: 'HTTP_RESPONSE_START',
140
- requestId,
131
+ tunnelWs.send(encodeBinaryControlFrame(FRAME_RESPONSE_START, requestId, {
141
132
  statusCode: 404,
142
133
  statusMessage: 'Not Found',
143
134
  headers: { 'Content-Type': 'text/plain' },
144
135
  }));
145
- this.tunnelWs.send(JSON.stringify({ type: 'HTTP_RESPONSE_END', requestId }));
136
+ tunnelWs.send(encodeBinaryControlFrame(FRAME_RESPONSE_END, requestId, {}));
146
137
  return;
147
138
  }
148
139
  targetUrlStr = this.normalizeTargetUrl(resolved);
@@ -152,23 +143,18 @@ export class HttpTunnelClient {
152
143
  }
153
144
  const fullTargetUrl = new URL(requestUrl || '/', targetUrlStr).href;
154
145
  try {
155
- const req = this.createStreamingHttpRequest(requestId, method, fullTargetUrl, headers);
156
- this.pendingStreamRequests.set(requestId, { req });
146
+ const req = this.createStreamingHttpRequest(requestId, method, fullTargetUrl, headers, tunnelWs);
147
+ this.pendingStreamRequests.set(requestId, { req, tunnelWs });
157
148
  }
158
149
  catch (error) {
159
150
  console.error('[HTTP Tunnel Client] Error creating HTTP request:', error);
160
- this.tunnelWs.send(JSON.stringify({
161
- type: 'TUNNEL_ERROR',
162
- requestId,
151
+ tunnelWs.send(encodeBinaryControlFrame(FRAME_TUNNEL_ERROR, requestId, {
163
152
  error: error instanceof Error ? error.message : 'Unknown error',
164
153
  code: 'REQUEST_ERROR',
165
154
  }));
166
155
  }
167
156
  }
168
- /**
169
- * 创建流式 HTTP 请求:收到 response 后发送 START,再流式发送 body 帧与 END
170
- */
171
- createStreamingHttpRequest(requestId, method, targetUrl, headers) {
157
+ createStreamingHttpRequest(requestId, method, targetUrl, headers, tunnelWs) {
172
158
  const urlObj = new URL(targetUrl);
173
159
  const isHttps = urlObj.protocol === 'https:';
174
160
  const httpModule = isHttps ? https : http;
@@ -186,25 +172,34 @@ export class HttpTunnelClient {
186
172
  rejectUnauthorized: false,
187
173
  };
188
174
  const req = httpModule.request(options, (res) => {
189
- this.tunnelWs.send(JSON.stringify({
190
- type: 'HTTP_RESPONSE_START',
191
- requestId,
192
- statusCode: res.statusCode || 200,
193
- statusMessage: res.statusMessage || 'OK',
175
+ tunnelWs.send(encodeBinaryControlFrame(FRAME_RESPONSE_START, requestId, {
176
+ statusCode: res.statusCode ?? 200,
177
+ statusMessage: res.statusMessage ?? 'OK',
194
178
  headers: this.normalizeHeaders(res.headers),
195
179
  }));
180
+ const bodyChunks = [];
181
+ let bodyLength = 0;
182
+ const flushBody = () => {
183
+ if (bodyLength === 0)
184
+ return;
185
+ const combined = bodyChunks.length === 1 ? bodyChunks[0] : Buffer.concat(bodyChunks, bodyLength);
186
+ bodyChunks.length = 0;
187
+ bodyLength = 0;
188
+ tunnelWs.send(encodeBinaryDataFrame(FRAME_BODY_RESPONSE, requestId, combined));
189
+ };
196
190
  res.on('data', (chunk) => {
197
- const frame = encodeBodyChunkFrame(BODY_CHUNK_RESPONSE, requestId, chunk);
198
- this.tunnelWs.send(frame);
191
+ bodyChunks.push(chunk);
192
+ bodyLength += chunk.length;
193
+ if (bodyLength >= RESPONSE_CHUNK_BUFFER_SIZE)
194
+ flushBody();
199
195
  });
200
196
  res.on('end', () => {
201
- this.tunnelWs.send(JSON.stringify({ type: 'HTTP_RESPONSE_END', requestId }));
197
+ flushBody();
198
+ tunnelWs.send(encodeBinaryControlFrame(FRAME_RESPONSE_END, requestId, {}));
202
199
  });
203
200
  res.on('error', (err) => {
204
201
  console.error('[HTTP Tunnel Client] Response stream error:', err);
205
- this.tunnelWs.send(JSON.stringify({
206
- type: 'TUNNEL_ERROR',
207
- requestId,
202
+ tunnelWs.send(encodeBinaryControlFrame(FRAME_TUNNEL_ERROR, requestId, {
208
203
  error: err.message,
209
204
  code: 'RESPONSE_ERROR',
210
205
  }));
@@ -212,128 +207,94 @@ export class HttpTunnelClient {
212
207
  });
213
208
  req.on('error', (error) => {
214
209
  this.pendingStreamRequests.delete(requestId);
215
- this.tunnelWs.send(JSON.stringify({
216
- type: 'TUNNEL_ERROR',
217
- requestId,
210
+ tunnelWs.send(encodeBinaryControlFrame(FRAME_TUNNEL_ERROR, requestId, {
218
211
  error: error.message,
219
212
  code: 'REQUEST_ERROR',
220
213
  }));
221
214
  });
222
215
  return req;
223
216
  }
224
- /**
225
- * 处理 WebSocket 升级请求;若有 getTarget 则按 Host/path 解析目标(与 HTTP 规则一致)
226
- */
227
- async handleWsUpgrade(message) {
228
- try {
229
- const { requestId, url: requestUrl, headers } = message;
230
- const host = headers?.host ?? '';
231
- const domain = host.split(':')[0];
232
- const pathname = new URL(requestUrl || '/', `http://${host}`).pathname;
233
- const search = new URL(requestUrl || '/', `http://${host}`).search;
234
- let targetUrl;
235
- if (this.getTarget) {
236
- const resolved = this.getTarget(domain, pathname);
237
- if (resolved == null) {
238
- console.warn(`[HTTP Tunnel Client] WebSocket 无匹配规则: ${domain}${pathname}`);
239
- return;
240
- }
241
- // 目标未写协议时默认 ws(本地服务通常为 HTTP/WS)
242
- const base = this.normalizeTargetUrl(resolved);
243
- const baseUrl = new URL(base);
244
- const wsProtocol = baseUrl.protocol === 'https:' ? 'wss:' : 'ws:';
245
- targetUrl = `${wsProtocol}//${baseUrl.host}${pathname}${search}`;
246
- }
247
- else {
248
- targetUrl = this.buildTargetUrl(requestUrl, 'ws:');
217
+ handleWsUpgrade(requestId, requestUrl, headers, tunnelWs) {
218
+ this.tunnelWsByRequestId.set(requestId, tunnelWs);
219
+ const host = headers?.host ?? '';
220
+ const domain = host.split(':')[0];
221
+ const pathname = new URL(requestUrl || '/', `http://${host}`).pathname;
222
+ const search = new URL(requestUrl || '/', `http://${host}`).search;
223
+ let targetUrl;
224
+ if (this.getTarget) {
225
+ const resolved = this.getTarget(domain, pathname);
226
+ if (resolved == null) {
227
+ console.warn(`[HTTP Tunnel Client] WebSocket 无匹配规则: ${domain}${pathname}`);
228
+ tunnelWs.send(encodeBinaryControlFrame(FRAME_WS_CLOSE, requestId, {
229
+ code: 1008,
230
+ reason: 'No matching rule for this path',
231
+ }));
232
+ this.tunnelWsByRequestId.delete(requestId);
233
+ return;
249
234
  }
250
- // 创建 WebSocket 客户端连接
251
- const wsClient = new WebSocket(targetUrl, { headers });
252
- this.wsClients.set(requestId, wsClient);
253
- // 处理 WebSocket 客户端消息
254
- wsClient.on('message', (data) => {
255
- const message = {
256
- type: 'WS_DATA',
257
- requestId,
258
- data: data.toString('base64'),
259
- isBinary: data instanceof Buffer && !this.isUtf8(data),
260
- };
261
- this.tunnelWs.send(JSON.stringify(message));
262
- });
263
- // 处理 WebSocket 客户端关闭
264
- wsClient.on('close', (code, reason) => {
265
- const message = {
266
- type: 'WS_CLOSE',
267
- requestId,
235
+ const base = this.normalizeTargetUrl(resolved);
236
+ const baseUrl = new URL(base);
237
+ const wsProtocol = baseUrl.protocol === 'https:' ? 'wss:' : 'ws:';
238
+ targetUrl = `${wsProtocol}//${baseUrl.host}${pathname}${search}`;
239
+ }
240
+ else {
241
+ targetUrl = this.buildTargetUrl(requestUrl, 'ws:');
242
+ }
243
+ const targetUrlObj = new URL(targetUrl);
244
+ const wsHeaders = { ...headers, host: targetUrlObj.host };
245
+ const wsClient = new WebSocket(targetUrl, { headers: wsHeaders });
246
+ this.wsClients.set(requestId, wsClient);
247
+ wsClient.on('message', (data) => {
248
+ const tws = this.tunnelWsByRequestId.get(requestId);
249
+ if (tws)
250
+ tws.send(encodeBinaryDataFrame(FRAME_WS_DATA, requestId, data));
251
+ });
252
+ wsClient.on('close', (code, reason) => {
253
+ const tws = this.tunnelWsByRequestId.get(requestId);
254
+ if (tws) {
255
+ tws.send(encodeBinaryControlFrame(FRAME_WS_CLOSE, requestId, {
268
256
  code,
269
257
  reason: reason ? reason.toString() : undefined,
270
- };
271
- this.tunnelWs.send(JSON.stringify(message));
272
- this.wsClients.delete(requestId);
273
- });
274
- // 处理 WebSocket 客户端错误
275
- wsClient.on('error', (error) => {
276
- console.error('[HTTP Tunnel Client] WebSocket client error:', error);
277
- const message = {
278
- type: 'WS_CLOSE',
279
- requestId,
258
+ }));
259
+ }
260
+ this.wsClients.delete(requestId);
261
+ this.tunnelWsByRequestId.delete(requestId);
262
+ });
263
+ wsClient.on('error', (error) => {
264
+ console.error('[HTTP Tunnel Client] WebSocket client error:', error);
265
+ const tws = this.tunnelWsByRequestId.get(requestId);
266
+ if (tws) {
267
+ tws.send(encodeBinaryControlFrame(FRAME_WS_CLOSE, requestId, {
280
268
  code: 1011,
281
269
  reason: error.message,
282
- };
283
- this.tunnelWs.send(JSON.stringify(message));
284
- this.wsClients.delete(requestId);
285
- });
286
- console.log(`[HTTP Tunnel Client] WebSocket connection established: ${targetUrl}`);
287
- }
288
- catch (error) {
289
- console.error('[HTTP Tunnel Client] Error handling WebSocket upgrade:', error);
290
- const errorMessage = {
291
- type: 'TUNNEL_ERROR',
292
- requestId: message.requestId,
293
- error: error instanceof Error ? error.message : 'Unknown error',
294
- code: 'WS_ERROR',
295
- };
296
- this.tunnelWs.send(JSON.stringify(errorMessage));
297
- }
270
+ }));
271
+ }
272
+ this.wsClients.delete(requestId);
273
+ this.tunnelWsByRequestId.delete(requestId);
274
+ });
298
275
  }
299
- /**
300
- * 处理 WebSocket 数据消息
301
- */
302
- handleWsData(message) {
303
- const wsClient = this.wsClients.get(message.requestId);
304
- if (wsClient && wsClient.readyState === WebSocket.OPEN) {
305
- const data = message.isBinary ? Buffer.from(message.data, 'base64') : message.data;
306
- wsClient.send(data);
307
- }
308
- else {
309
- console.warn('[HTTP Tunnel Client] WebSocket client not found for:', message.requestId);
310
- }
276
+ handleWsData(requestId, payload) {
277
+ const wsClient = this.wsClients.get(requestId);
278
+ if (wsClient && wsClient.readyState === WebSocket.OPEN)
279
+ wsClient.send(payload);
311
280
  }
312
- /**
313
- * 处理 WebSocket 关闭消息
314
- */
315
- handleWsClose(message) {
316
- const wsClient = this.wsClients.get(message.requestId);
281
+ handleWsClose(requestId, payloadJson) {
282
+ const wsClient = this.wsClients.get(requestId);
317
283
  if (wsClient) {
318
- wsClient.close(message.code, message.reason);
319
- this.wsClients.delete(message.requestId);
284
+ wsClient.close(payloadJson?.code ?? 1000, payloadJson?.reason ?? '');
320
285
  }
286
+ this.wsClients.delete(requestId);
287
+ this.tunnelWsByRequestId.delete(requestId);
321
288
  }
322
- /**
323
- * 构建目标 URL
324
- */
325
289
  buildTargetUrl(requestUrl, protocolOverride) {
326
- // 解析请求 URL(可能包含完整 URL 或仅路径)
327
290
  let requestPath = '';
328
291
  let requestSearch = '';
329
- // 检查是否为完整 URL
330
292
  if (requestUrl.startsWith('http://') || requestUrl.startsWith('https://')) {
331
293
  const urlObj = new URL(requestUrl);
332
294
  requestPath = urlObj.pathname;
333
295
  requestSearch = urlObj.search;
334
296
  }
335
297
  else {
336
- // 处理相对路径
337
298
  const queryIndex = requestUrl.indexOf('?');
338
299
  if (queryIndex !== -1) {
339
300
  requestPath = requestUrl.substring(0, queryIndex);
@@ -343,19 +304,14 @@ export class HttpTunnelClient {
343
304
  requestPath = requestUrl;
344
305
  }
345
306
  }
346
- // 使用目标协议和主机
347
307
  const protocol = protocolOverride || this.targetUrl.protocol || 'http:';
348
308
  const hostname = this.targetUrl.hostname || 'localhost';
349
309
  const port = this.targetUrl.port || (protocol === 'https:' ? '443' : '80');
350
- // 构建完整 URL
351
310
  const portStr = (protocol === 'http:' && port === '80') || (protocol === 'https:' && port === '443')
352
311
  ? ''
353
312
  : `:${port}`;
354
313
  return `${protocol}//${hostname}${portStr}${requestPath}${requestSearch}`;
355
314
  }
356
- /**
357
- * 标准化响应头
358
- */
359
315
  normalizeHeaders(headers) {
360
316
  const normalized = {};
361
317
  for (const [key, value] of Object.entries(headers)) {
@@ -365,26 +321,12 @@ export class HttpTunnelClient {
365
321
  }
366
322
  return normalized;
367
323
  }
368
- /**
369
- * 判断 Buffer 是否为 UTF-8 编码
370
- */
371
- isUtf8(buffer) {
372
- try {
373
- buffer.toString('utf8');
374
- return true;
375
- }
376
- catch {
377
- return false;
378
- }
379
- }
380
- /**
381
- * 关闭客户端
382
- */
383
324
  close() {
384
325
  this.pendingStreamRequests.forEach((p) => p.req.destroy());
385
326
  this.pendingStreamRequests.clear();
386
327
  this.wsClients.forEach((ws) => ws.close());
387
328
  this.wsClients.clear();
329
+ this.tunnelWsByRequestId.clear();
388
330
  this.httpAgent.destroy();
389
331
  this.httpsAgent.destroy();
390
332
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http-tunnel-client.js","sourceRoot":"","sources":["../../src/core/http-tunnel-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-tunnel-client.js","sourceRoot":"","sources":["../../src/core/http-tunnel-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAiBnC,MAAM,0BAA0B,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7C,MAAM,OAAO,gBAAgB;IACnB,SAAS,CAAM;IACf,SAAS,CAAc;IACvB,SAAS,CAA+D;IACxE,SAAS,CAAa;IACtB,UAAU,CAAc;IACxB,SAAS,GAA2B,IAAI,GAAG,EAAE,CAAC;IAC9C,qBAAqB,GAAsC,IAAI,GAAG,EAAE,CAAC;IAC7E,yCAAyC;IACjC,mBAAmB,GAA2B,IAAI,GAAG,EAAE,CAAC;IAEhE,YAAY,OAAgC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS;YACZ,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBAC/C,CAAC,CAAC,OAAO,CAAC,SAAS;gBACnB,CAAC,CAAC,OAAO,CAAC,QAAQ;oBAChB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACpB,CAAC,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;QAE3C,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;YAC9B,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,GAAG;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;YAChC,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,GAAG;YACnB,kBAAkB,EAAE,KAAK;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5B,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACvE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC,CAAC;YACtF,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBACvB,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;YACnC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,IAAqB,EAAE,QAAmB;QACpE,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QAE3B,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAsB,CAAC;gBAClE,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;oBAAE,OAAO;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YAAE,OAAO;QAEhC,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAE1D,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,MAAM,GAAI,WAAW,EAAE,MAAiB,IAAI,KAAK,CAAC;gBACxD,MAAM,GAAG,GAAI,WAAW,EAAE,GAAc,IAAI,GAAG,CAAC;gBAChD,MAAM,OAAO,GAAI,WAAW,EAAE,OAAkC,IAAI,EAAE,CAAC;gBACvE,MAAM,MAAM,GAAG,WAAW,EAAE,MAA4B,CAAC;gBACzD,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC/E,MAAM;YACR,CAAC;YACD,KAAK,kBAAkB;gBACrB,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC1D,MAAM;YACR,KAAK,iBAAiB;gBACpB,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,GAAG,GAAI,WAAW,EAAE,GAAc,IAAI,GAAG,CAAC;gBAChD,MAAM,OAAO,GAAI,WAAW,EAAE,OAAkC,IAAI,EAAE,CAAC;gBACvE,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACxD,MAAM;YACR,CAAC;YACD,KAAK,aAAa;gBAChB,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACtC,MAAM;YACR,KAAK,cAAc;gBACjB,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAC3C,MAAM;YACR;gBACE,MAAM;QACV,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,SAAiB,EAAE,OAAe,EAAE,SAAoB;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC;IAEO,oBAAoB,CAAC,SAAiB,EAAE,SAAoB;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAC3C,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,QAAgB;QACzC,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,QAAQ,CAAC;QACvF,OAAO,UAAU,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAEO,sBAAsB,CAC5B,SAAiB,EACjB,MAAc,EACd,UAAkB,EAClB,OAA+B,EAC/B,MAA0B,EAC1B,QAAmB;QAEnB,IAAI,YAAoB,CAAC;QACzB,IAAI,MAAM,EAAE,CAAC;YACX,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,EAAE,CAAC;QACzE,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;YACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACrB,QAAQ,CAAC,IAAI,CACX,wBAAwB,CAAC,oBAAoB,EAAE,SAAS,EAAE;oBACxD,UAAU,EAAE,GAAG;oBACf,aAAa,EAAE,WAAW;oBAC1B,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;iBAC1C,CAAC,CACH,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC3E,OAAO;YACT,CAAC;YACD,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC;QAEpE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,0BAA0B,CACzC,SAAS,EACT,MAAM,EACN,aAAa,EACb,OAAO,EACP,QAAQ,CACT,CAAC;YACF,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;YAC1E,QAAQ,CAAC,IAAI,CACX,wBAAwB,CAAC,kBAAkB,EAAE,SAAS,EAAE;gBACtD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;gBAC/D,IAAI,EAAE,eAAe;aACtB,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,0BAA0B,CAChC,SAAiB,EACjB,MAAc,EACd,SAAiB,EACjB,OAA+B,EAC/B,QAAmB;QAEnB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;QAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAE1C,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAClD,cAAc,CAAC,mBAAmB,CAAC,GAAG,cAAc,CAAC;QACrD,cAAc,CAAC,oBAAoB,CAAC,GAAG,cAAc,CAAC;QAEtD,MAAM,OAAO,GAA2D;YACtE,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,IAAI,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM;YACrC,MAAM;YACN,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;YACjD,kBAAkB,EAAE,KAAK;SAC1B,CAAC;QAEF,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAoB,EAAE,EAAE;YAC/D,QAAQ,CAAC,IAAI,CACX,wBAAwB,CAAC,oBAAoB,EAAE,SAAS,EAAE;gBACxD,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG;gBACjC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;gBACxC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;aAC5C,CAAC,CACH,CAAC;YAEF,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,IAAI,UAAU,GAAG,CAAC,CAAC;YAEnB,MAAM,SAAS,GAAG,GAAG,EAAE;gBACrB,IAAI,UAAU,KAAK,CAAC;oBAAE,OAAO;gBAC7B,MAAM,QAAQ,GACZ,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACnF,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;gBACtB,UAAU,GAAG,CAAC,CAAC;gBACf,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YACjF,CAAC,CAAC;YAEF,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC/B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;gBAC3B,IAAI,UAAU,IAAI,0BAA0B;oBAAE,SAAS,EAAE,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,SAAS,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACtB,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAC;gBAClE,QAAQ,CAAC,IAAI,CACX,wBAAwB,CAAC,kBAAkB,EAAE,SAAS,EAAE;oBACtD,KAAK,EAAE,GAAG,CAAC,OAAO;oBAClB,IAAI,EAAE,gBAAgB;iBACvB,CAAC,CACH,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7C,QAAQ,CAAC,IAAI,CACX,wBAAwB,CAAC,kBAAkB,EAAE,SAAS,EAAE;gBACtD,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,IAAI,EAAE,eAAe;aACtB,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,eAAe,CACrB,SAAiB,EACjB,UAAkB,EAClB,OAA+B,EAC/B,QAAmB;QAEnB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAElD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;QACvE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAEnE,IAAI,SAAiB,CAAC;QACtB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,yCAAyC,MAAM,GAAG,QAAQ,EAAE,CAAC,CAAC;gBAC3E,QAAQ,CAAC,IAAI,CACX,wBAAwB,CAAC,cAAc,EAAE,SAAS,EAAE;oBAClD,IAAI,EAAE,IAAI;oBACV,MAAM,EAAE,gCAAgC;iBACzC,CAAC,CACH,CAAC;gBACF,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC3C,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,SAAS,GAAG,GAAG,UAAU,KAAK,OAAO,CAAC,IAAI,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;QAE1D,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAExC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,GAAG;gBAAE,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,IAAI,CACN,wBAAwB,CAAC,cAAc,EAAE,SAAS,EAAE;oBAClD,IAAI;oBACJ,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;iBAC/C,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,IAAI,CACN,wBAAwB,CAAC,cAAc,EAAE,SAAS,EAAE;oBAClD,IAAI,EAAE,IAAI;oBACV,MAAM,EAAE,KAAK,CAAC,OAAO;iBACtB,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,SAAiB,EAAE,OAAe;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjF,CAAC;IAEO,aAAa,CAAC,SAAiB,EAAE,WAA2C;QAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,CAAE,WAAW,EAAE,IAAe,IAAI,IAAI,EAAG,WAAW,EAAE,MAAiB,IAAI,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAEO,cAAc,CAAC,UAAkB,EAAE,gBAAyB;QAClE,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,aAAa,GAAG,EAAE,CAAC;QAEvB,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1E,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;YACnC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC9B,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtB,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBAClD,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,UAAU,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,WAAW,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,OAAO,GACX,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,CAAC;YAClF,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAEjB,OAAO,GAAG,QAAQ,KAAK,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,EAAE,CAAC;IAC5E,CAAC;IAEO,gBAAgB,CAAC,OAAiC;QACxD,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClF,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;CACF"}
@@ -5,9 +5,23 @@
5
5
  import type { OutgoingHttpHeaders } from 'http';
6
6
  import type { ProxyRule } from './rule-manager.js';
7
7
  export type HttpTunnelMessageType = 'WELCOME' | 'HTTP_REQUEST' | 'HTTP_RESPONSE' | 'HTTP_REQUEST_START' | 'HTTP_REQUEST_CHUNK' | 'HTTP_REQUEST_END' | 'HTTP_RESPONSE_START' | 'HTTP_RESPONSE_CHUNK' | 'HTTP_RESPONSE_END' | 'WS_UPGRADE' | 'WS_DATA' | 'WS_CLOSE' | 'TUNNEL_ERROR' | 'RULES_SYNC' | 'RULES_ACK';
8
- /** 二进制 body 帧类型:1=请求体分片, 2=响应体分片 */
8
+ /** 二进制 body 帧类型(旧,兼容 decodeBodyChunkFrame):1=请求体分片, 2=响应体分片 */
9
9
  export declare const BODY_CHUNK_REQUEST = 1;
10
10
  export declare const BODY_CHUNK_RESPONSE = 2;
11
+ /** 统一二进制帧类型(控制面+数据面) */
12
+ export declare const FRAME_REQUEST_START = 1;
13
+ export declare const FRAME_REQUEST_END = 2;
14
+ export declare const FRAME_RESPONSE_START = 3;
15
+ export declare const FRAME_RESPONSE_END = 4;
16
+ export declare const FRAME_TUNNEL_ERROR = 5;
17
+ export declare const FRAME_WS_UPGRADE = 16;
18
+ export declare const FRAME_WS_DATA = 17;
19
+ export declare const FRAME_WS_CLOSE = 18;
20
+ export declare const FRAME_BODY_REQUEST = 32;
21
+ export declare const FRAME_BODY_RESPONSE = 33;
22
+ export type BinaryFrameType = typeof FRAME_REQUEST_START | typeof FRAME_REQUEST_END | typeof FRAME_RESPONSE_START | typeof FRAME_RESPONSE_END | typeof FRAME_TUNNEL_ERROR | typeof FRAME_WS_UPGRADE | typeof FRAME_WS_DATA | typeof FRAME_WS_CLOSE | typeof FRAME_BODY_REQUEST | typeof FRAME_BODY_RESPONSE;
23
+ /** 判断是否为统一二进制帧(type 在 0x01..0x21 且非旧 body 1/2 时可与旧逻辑区分;此处统一用 0x01+ 判定) */
24
+ export declare function isBinaryFrame(data: Buffer): boolean;
11
25
  export interface HttpTunnelBaseMessage {
12
26
  type: HttpTunnelMessageType;
13
27
  requestId: string;
@@ -164,6 +178,14 @@ export declare function decodeBodyChunkFrame(data: Buffer, expectedType: typeof
164
178
  } | null;
165
179
  /** 判断 WebSocket 消息是否为二进制 body 帧(首字节为 1 或 2) */
166
180
  export declare function isBodyChunkFrame(data: Buffer): boolean;
181
+ export declare function encodeBinaryControlFrame(type: BinaryFrameType, requestId: string, payload: Record<string, unknown>): Buffer;
182
+ export declare function encodeBinaryDataFrame(type: typeof FRAME_BODY_REQUEST | typeof FRAME_BODY_RESPONSE | typeof FRAME_WS_DATA, requestId: string, payload: Buffer): Buffer;
183
+ export declare function decodeBinaryFrame(data: Buffer): {
184
+ type: number;
185
+ requestId: string;
186
+ payload: Buffer;
187
+ payloadJson: Record<string, unknown> | null;
188
+ } | null;
167
189
  /**
168
190
  * 生成唯一的请求 ID
169
191
  */