@feng3d/ctc 0.0.10 → 0.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.
- package/README.md +17 -32
- package/dist/admin-server.d.ts +65 -12
- package/dist/admin-server.d.ts.map +1 -1
- package/dist/admin-server.js +291 -564
- package/dist/admin-server.js.map +1 -1
- package/dist/cli.d.ts +12 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +931 -311
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +5 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -11
- package/dist/config.js.map +1 -1
- package/dist/controller.d.ts +27 -124
- package/dist/controller.d.ts.map +1 -1
- package/dist/controller.js +77 -139
- package/dist/controller.js.map +1 -1
- package/dist/data-channel.d.ts +76 -0
- package/dist/data-channel.d.ts.map +1 -0
- package/dist/data-channel.js +222 -0
- package/dist/data-channel.js.map +1 -0
- package/dist/forward-proxy.d.ts +100 -0
- package/dist/forward-proxy.d.ts.map +1 -0
- package/dist/forward-proxy.js +407 -0
- package/dist/forward-proxy.js.map +1 -0
- package/dist/handlers/unified-handler.d.ts +33 -75
- package/dist/handlers/unified-handler.d.ts.map +1 -1
- package/dist/handlers/unified-handler.js +191 -315
- package/dist/handlers/unified-handler.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +135 -36
- package/dist/index.js.map +1 -1
- package/dist/ipc-handler.d.ts +52 -0
- package/dist/ipc-handler.d.ts.map +1 -0
- package/dist/ipc-handler.js +110 -0
- package/dist/ipc-handler.js.map +1 -0
- package/dist/proxy-manager.d.ts +13 -6
- package/dist/proxy-manager.d.ts.map +1 -1
- package/dist/proxy-manager.js +58 -23
- package/dist/proxy-manager.js.map +1 -1
- package/package.json +9 -5
|
@@ -3,370 +3,246 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 统一代理连接处理器模块。
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* 负责处理通过穿透隧道传输的所有协议连接。
|
|
7
|
+
* TCP 类协议(HTTP/WS/TCP)作为原始字节流通过本地 TCP socket 转发,
|
|
8
|
+
* UDP 通过本地 dgram socket 转发。
|
|
9
|
+
* 不做协议解析,HTTP 和 WebSocket 协议由外部客户端和本地服务端到端处理。
|
|
8
10
|
*/
|
|
9
11
|
import { EventEmitter } from 'events';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
import { MessageType, createMessage, } from '@feng3d/chuantou-shared';
|
|
12
|
+
import { Socket } from 'net';
|
|
13
|
+
import { createSocket as createUdpSocket } from 'dgram';
|
|
14
|
+
import { logger, MessageType, createMessage } from '@feng3d/chuantou-shared';
|
|
15
|
+
/** UDP 本地 socket 超时时间(毫秒) */
|
|
16
|
+
const UDP_LOCAL_TIMEOUT = 30000;
|
|
16
17
|
/**
|
|
17
|
-
*
|
|
18
|
+
* 统一代理连接处理器
|
|
18
19
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* 工作流程:
|
|
23
|
-
* 1. 监听控制器的 `newConnection` 事件,接收新的连接请求
|
|
24
|
-
* 2. 根据协议类型(http/websocket)建立相应的本地连接
|
|
25
|
-
* 3. 将本地服务发送的数据转发给服务器
|
|
26
|
-
* 4. 将服务器转发的远程客户端数据转发到本地服务
|
|
27
|
-
* 5. 处理连接关闭和错误情况
|
|
28
|
-
*
|
|
29
|
-
* 触发的事件:
|
|
30
|
-
* - `error` - 处理连接时发生错误
|
|
20
|
+
* 所有 TCP 类协议统一处理:收到 NEW_CONNECTION 后打开本地 TCP socket,
|
|
21
|
+
* 通过二进制数据通道双向管道传输原始字节。
|
|
22
|
+
* UDP 使用独立的 dgram socket 和超时管理。
|
|
31
23
|
*/
|
|
32
24
|
export class UnifiedHandler extends EventEmitter {
|
|
33
|
-
/**
|
|
34
|
-
* 创建统一处理器实例。
|
|
35
|
-
*
|
|
36
|
-
* 自动监听控制器的 `newConnection` 和 `connectionClose` 事件,
|
|
37
|
-
* 并设置数据转发监听器。
|
|
38
|
-
*
|
|
39
|
-
* @param controller - 控制器实例,用于与服务器通信
|
|
40
|
-
* @param config - 代理配置对象,包含本地服务地址和端口
|
|
41
|
-
*/
|
|
42
25
|
constructor(controller, config) {
|
|
43
26
|
super();
|
|
44
|
-
/**
|
|
45
|
-
this.
|
|
46
|
-
/** 本地
|
|
47
|
-
this.
|
|
48
|
-
/**
|
|
49
|
-
this.
|
|
27
|
+
/** 本地 TCP 连接映射表:connectionId → Socket */
|
|
28
|
+
this.localTcpConnections = new Map();
|
|
29
|
+
/** 本地 UDP socket 映射表:connectionId → { socket, timer } */
|
|
30
|
+
this.localUdpSockets = new Map();
|
|
31
|
+
/** 数据缓冲区:在 NEW_CONNECTION 到达前缓冲的数据帧 */
|
|
32
|
+
this.pendingDataBuffers = new Map();
|
|
33
|
+
/** 已通知关闭的连接集合,防止重复发送 CONNECTION_CLOSE */
|
|
34
|
+
this.closedConnections = new Set();
|
|
35
|
+
/** 本地 socket 写入缓慢导致的背压连接集合 */
|
|
36
|
+
this.backedUpConnections = new Set();
|
|
50
37
|
this.controller = controller;
|
|
38
|
+
this.dataChannel = controller.getDataChannel();
|
|
51
39
|
this.config = config;
|
|
52
|
-
//
|
|
40
|
+
// 监听新连接通知
|
|
53
41
|
this.controller.on('newConnection', (msg) => {
|
|
54
|
-
if (msg.payload.
|
|
55
|
-
|
|
42
|
+
if (msg.payload.remotePort !== this.config.remotePort)
|
|
43
|
+
return;
|
|
44
|
+
if (msg.payload.protocol === 'udp') {
|
|
45
|
+
this.handleUdpConnection(msg);
|
|
56
46
|
}
|
|
57
|
-
else
|
|
58
|
-
this.
|
|
47
|
+
else {
|
|
48
|
+
this.handleTcpConnection(msg);
|
|
59
49
|
}
|
|
60
50
|
});
|
|
61
|
-
//
|
|
62
|
-
this.
|
|
63
|
-
|
|
51
|
+
// 监听数据通道的 TCP 数据
|
|
52
|
+
this.dataChannel.on('data', (connectionId, data) => {
|
|
53
|
+
this.handleDataFromServer(connectionId, data);
|
|
54
|
+
});
|
|
55
|
+
// 监听数据通道的 UDP 数据
|
|
56
|
+
this.dataChannel.on('udpData', (connectionId, data) => {
|
|
57
|
+
this.handleUdpDataFromServer(connectionId, data);
|
|
58
|
+
});
|
|
59
|
+
// 监听连接关闭
|
|
64
60
|
this.controller.on('connectionClose', (msg) => {
|
|
65
61
|
this.handleConnectionClose(msg);
|
|
66
62
|
});
|
|
67
63
|
}
|
|
68
64
|
/**
|
|
69
|
-
*
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
65
|
+
* 处理 TCP 类协议连接(HTTP/WS/TCP 统一处理)
|
|
66
|
+
*
|
|
67
|
+
* 打开本地 TCP socket,通过数据通道双向管道传输原始字节。
|
|
68
|
+
*/
|
|
69
|
+
handleTcpConnection(msg) {
|
|
70
|
+
const { connectionId, protocol, remoteAddress } = msg.payload;
|
|
71
|
+
logger.log(`${protocol.toUpperCase()} 连接: ${remoteAddress} -> ${this.config.localHost || 'localhost'}:${this.config.localPort} (${connectionId})`);
|
|
72
|
+
const socket = new Socket();
|
|
73
|
+
socket.on('connect', () => {
|
|
74
|
+
logger.log(`本地 TCP 已连接: ${connectionId}`);
|
|
75
|
+
// 刷新缓冲区中的待处理数据
|
|
76
|
+
const buffered = this.pendingDataBuffers.get(connectionId);
|
|
77
|
+
if (buffered) {
|
|
78
|
+
for (const chunk of buffered) {
|
|
79
|
+
socket.write(chunk);
|
|
83
80
|
}
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
this.pendingDataBuffers.delete(connectionId);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
socket.on('data', (data) => {
|
|
85
|
+
const canContinue = this.dataChannel.sendData(connectionId, data);
|
|
86
|
+
if (!canContinue) {
|
|
87
|
+
socket.pause();
|
|
88
|
+
const dcSocket = this.dataChannel.getTcpSocket();
|
|
89
|
+
dcSocket?.once('drain', () => {
|
|
90
|
+
if (!socket.destroyed)
|
|
91
|
+
socket.resume();
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
socket.on('close', () => {
|
|
96
|
+
logger.log(`本地 TCP 关闭: ${connectionId}`);
|
|
97
|
+
this.notifyServerClose(connectionId);
|
|
98
|
+
this.localTcpConnections.delete(connectionId);
|
|
99
|
+
this.pendingDataBuffers.delete(connectionId);
|
|
100
|
+
this.backedUpConnections.delete(connectionId);
|
|
101
|
+
});
|
|
102
|
+
socket.on('error', (error) => {
|
|
103
|
+
logger.error(`本地 TCP 错误 ${connectionId}:`, error.message);
|
|
104
|
+
this.notifyServerClose(connectionId);
|
|
105
|
+
this.localTcpConnections.delete(connectionId);
|
|
106
|
+
this.pendingDataBuffers.delete(connectionId);
|
|
107
|
+
this.backedUpConnections.delete(connectionId);
|
|
108
|
+
});
|
|
109
|
+
socket.connect({
|
|
110
|
+
host: this.config.localHost || 'localhost',
|
|
111
|
+
port: this.config.localPort,
|
|
112
|
+
});
|
|
113
|
+
this.localTcpConnections.set(connectionId, socket);
|
|
86
114
|
}
|
|
87
115
|
/**
|
|
88
|
-
*
|
|
116
|
+
* 处理来自服务器的 TCP 数据(通过数据通道)
|
|
89
117
|
*/
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
hostname: parsedUrl.hostname,
|
|
100
|
-
port: parsedUrl.port || this.config.localPort,
|
|
101
|
-
path: parsedUrl.pathname + parsedUrl.search,
|
|
102
|
-
headers: this.filterHeaders(headers),
|
|
103
|
-
rejectUnauthorized: false,
|
|
104
|
-
};
|
|
105
|
-
// 创建请求
|
|
106
|
-
const requestFn = parsedUrl.protocol === 'https:' ? httpsRequest : httpRequest;
|
|
107
|
-
try {
|
|
108
|
-
const req = requestFn(options, (res) => {
|
|
109
|
-
const contentType = (res.headers['content-type'] || '').toLowerCase();
|
|
110
|
-
const isSSE = contentType.includes('text/event-stream');
|
|
111
|
-
if (isSSE) {
|
|
112
|
-
// SSE 流式转发 - 先发送响应头
|
|
113
|
-
logger.log(`SSE 流: ${url} (${connectionId})`);
|
|
114
|
-
this.sendResponseHeaders(connectionId, {
|
|
115
|
-
statusCode: res.statusCode || 200,
|
|
116
|
-
headers: res.headers,
|
|
117
|
-
});
|
|
118
|
-
this.streamingResponses.set(connectionId, res);
|
|
119
|
-
res.on('data', (chunk) => {
|
|
120
|
-
this.forwardStreamData(connectionId, chunk);
|
|
121
|
-
});
|
|
122
|
-
res.on('end', () => {
|
|
123
|
-
logger.log(`SSE 结束: ${connectionId}`);
|
|
124
|
-
this.notifyStreamEnd(connectionId);
|
|
125
|
-
this.streamingResponses.delete(connectionId);
|
|
126
|
-
});
|
|
127
|
-
res.on('error', (error) => {
|
|
128
|
-
logger.error(`SSE 错误 ${connectionId}:`, error.message);
|
|
129
|
-
this.notifyStreamEnd(connectionId);
|
|
130
|
-
this.streamingResponses.delete(connectionId);
|
|
131
|
-
});
|
|
118
|
+
handleDataFromServer(connectionId, data) {
|
|
119
|
+
const socket = this.localTcpConnections.get(connectionId);
|
|
120
|
+
if (socket && !socket.destroyed) {
|
|
121
|
+
if (socket.connecting) {
|
|
122
|
+
// socket 还在连接中,缓冲数据
|
|
123
|
+
let buffer = this.pendingDataBuffers.get(connectionId);
|
|
124
|
+
if (!buffer) {
|
|
125
|
+
buffer = [];
|
|
126
|
+
this.pendingDataBuffers.set(connectionId, buffer);
|
|
132
127
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
res.on('error', (error) => {
|
|
148
|
-
this.sendError(connectionId, error.message);
|
|
128
|
+
buffer.push(data);
|
|
129
|
+
}
|
|
130
|
+
else if (!socket.write(data)) {
|
|
131
|
+
// 本地 socket 写入缓慢,暂停数据通道
|
|
132
|
+
if (!this.backedUpConnections.has(connectionId)) {
|
|
133
|
+
this.backedUpConnections.add(connectionId);
|
|
134
|
+
const dcSocket = this.dataChannel.getTcpSocket();
|
|
135
|
+
if (dcSocket)
|
|
136
|
+
dcSocket.pause();
|
|
137
|
+
socket.once('drain', () => {
|
|
138
|
+
this.backedUpConnections.delete(connectionId);
|
|
139
|
+
if (this.backedUpConnections.size === 0) {
|
|
140
|
+
this.dataChannel.getTcpSocket()?.resume();
|
|
141
|
+
}
|
|
149
142
|
});
|
|
150
143
|
}
|
|
151
|
-
});
|
|
152
|
-
req.on('error', (error) => {
|
|
153
|
-
this.sendError(connectionId, error.message);
|
|
154
|
-
});
|
|
155
|
-
// 发送请求体
|
|
156
|
-
if (body) {
|
|
157
|
-
req.write(Buffer.from(body, 'base64'));
|
|
158
144
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
this.
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
this.forwardToServer(connectionId, data);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
// 连接尚未建立(NEW_CONNECTION 可能还未到达),缓冲数据
|
|
148
|
+
let buffer = this.pendingDataBuffers.get(connectionId);
|
|
149
|
+
if (!buffer) {
|
|
150
|
+
buffer = [];
|
|
151
|
+
this.pendingDataBuffers.set(connectionId, buffer);
|
|
152
|
+
}
|
|
153
|
+
buffer.push(data);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* 处理 UDP 连接
|
|
157
|
+
*/
|
|
158
|
+
handleUdpConnection(msg) {
|
|
159
|
+
const { connectionId, remoteAddress } = msg.payload;
|
|
160
|
+
logger.log(`UDP 连接: ${remoteAddress} -> ${this.config.localHost || 'localhost'}:${this.config.localPort} (${connectionId})`);
|
|
161
|
+
const socket = createUdpSocket('udp4');
|
|
162
|
+
socket.on('message', (data) => {
|
|
163
|
+
this.dataChannel.sendUdpData(connectionId, data);
|
|
164
|
+
// 刷新超时
|
|
165
|
+
const entry = this.localUdpSockets.get(connectionId);
|
|
166
|
+
if (entry) {
|
|
167
|
+
clearTimeout(entry.timer);
|
|
168
|
+
entry.timer = setTimeout(() => this.cleanupUdpSocket(connectionId), UDP_LOCAL_TIMEOUT);
|
|
169
|
+
}
|
|
185
170
|
});
|
|
186
|
-
|
|
187
|
-
logger.
|
|
188
|
-
this.
|
|
189
|
-
this.cleanupWsConnection(connectionId);
|
|
171
|
+
socket.on('error', (error) => {
|
|
172
|
+
logger.error(`本地 UDP 错误 ${connectionId}:`, error.message);
|
|
173
|
+
this.cleanupUdpSocket(connectionId);
|
|
190
174
|
});
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
175
|
+
socket.bind(() => {
|
|
176
|
+
this.localUdpSockets.set(connectionId, {
|
|
177
|
+
socket,
|
|
178
|
+
timer: setTimeout(() => this.cleanupUdpSocket(connectionId), UDP_LOCAL_TIMEOUT),
|
|
179
|
+
});
|
|
195
180
|
});
|
|
196
|
-
this.localWsConnections.set(connectionId, localWs);
|
|
197
181
|
}
|
|
198
182
|
/**
|
|
199
|
-
*
|
|
183
|
+
* 处理来自服务器的 UDP 数据
|
|
200
184
|
*/
|
|
201
|
-
|
|
202
|
-
const
|
|
203
|
-
if (
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
}));
|
|
185
|
+
handleUdpDataFromServer(connectionId, data) {
|
|
186
|
+
const entry = this.localUdpSockets.get(connectionId);
|
|
187
|
+
if (entry) {
|
|
188
|
+
entry.socket.send(data, this.config.localPort, this.config.localHost || 'localhost');
|
|
189
|
+
// 刷新超时
|
|
190
|
+
clearTimeout(entry.timer);
|
|
191
|
+
entry.timer = setTimeout(() => this.cleanupUdpSocket(connectionId), UDP_LOCAL_TIMEOUT);
|
|
209
192
|
}
|
|
210
193
|
}
|
|
211
194
|
/**
|
|
212
|
-
*
|
|
195
|
+
* 通知服务器连接已关闭
|
|
213
196
|
*/
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
}
|
|
197
|
+
notifyServerClose(connectionId) {
|
|
198
|
+
if (this.closedConnections.has(connectionId))
|
|
199
|
+
return;
|
|
200
|
+
this.closedConnections.add(connectionId);
|
|
201
|
+
this.controller.sendMessage(createMessage(MessageType.CONNECTION_CLOSE, { connectionId }));
|
|
219
202
|
}
|
|
220
203
|
/**
|
|
221
|
-
*
|
|
222
|
-
*/
|
|
223
|
-
sendResponse(connectionId, response) {
|
|
224
|
-
const controller = this.controller;
|
|
225
|
-
if (controller.ws && controller.ws.readyState === WebSocket.OPEN) {
|
|
226
|
-
controller.ws.send(JSON.stringify({
|
|
227
|
-
type: 'http_response',
|
|
228
|
-
connectionId,
|
|
229
|
-
...response,
|
|
230
|
-
}));
|
|
231
|
-
}
|
|
232
|
-
this.pendingConnections.delete(connectionId);
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* 发送流式响应头(用于 SSE)。
|
|
236
|
-
*/
|
|
237
|
-
sendResponseHeaders(connectionId, headers) {
|
|
238
|
-
const controller = this.controller;
|
|
239
|
-
if (controller.ws && controller.ws.readyState === WebSocket.OPEN) {
|
|
240
|
-
controller.ws.send(JSON.stringify({
|
|
241
|
-
type: 'http_response_headers',
|
|
242
|
-
connectionId,
|
|
243
|
-
...headers,
|
|
244
|
-
}));
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* 发送流式响应数据块(用于 SSE)。
|
|
249
|
-
*/
|
|
250
|
-
forwardStreamData(connectionId, data) {
|
|
251
|
-
const controller = this.controller;
|
|
252
|
-
if (controller.ws && controller.ws.readyState === WebSocket.OPEN) {
|
|
253
|
-
controller.ws.send(JSON.stringify({
|
|
254
|
-
type: 'http_response_data',
|
|
255
|
-
connectionId,
|
|
256
|
-
data: data.toString('base64'),
|
|
257
|
-
}));
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* 通知服务器流式响应结束(用于 SSE)。
|
|
262
|
-
*/
|
|
263
|
-
notifyStreamEnd(connectionId) {
|
|
264
|
-
const controller = this.controller;
|
|
265
|
-
if (controller.ws && controller.ws.readyState === WebSocket.OPEN) {
|
|
266
|
-
controller.ws.send(JSON.stringify({
|
|
267
|
-
type: 'http_response_end',
|
|
268
|
-
connectionId,
|
|
269
|
-
}));
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* 向服务器发送错误响应。
|
|
274
|
-
*/
|
|
275
|
-
sendError(connectionId, error) {
|
|
276
|
-
this.sendResponse(connectionId, {
|
|
277
|
-
statusCode: 500,
|
|
278
|
-
headers: {},
|
|
279
|
-
body: error,
|
|
280
|
-
});
|
|
281
|
-
this.emit('error', new Error(`连接 ${connectionId} 错误: ${error}`));
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* 通知服务器某个 WebSocket 连接已关闭。
|
|
285
|
-
*/
|
|
286
|
-
notifyServerClose(connectionId, code) {
|
|
287
|
-
const closeMsg = createMessage(MessageType.CONNECTION_CLOSE, {
|
|
288
|
-
connectionId,
|
|
289
|
-
});
|
|
290
|
-
this.controller.sendMessage(closeMsg);
|
|
291
|
-
}
|
|
292
|
-
/**
|
|
293
|
-
* 处理来自服务器的连接关闭通知。
|
|
204
|
+
* 处理来自服务器的连接关闭通知
|
|
294
205
|
*/
|
|
295
206
|
handleConnectionClose(msg) {
|
|
296
207
|
const { connectionId } = msg.payload;
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
this.streamingResponses.delete(connectionId);
|
|
308
|
-
}
|
|
309
|
-
// 关闭 WebSocket 连接
|
|
310
|
-
const localWs = this.localWsConnections.get(connectionId);
|
|
311
|
-
if (localWs) {
|
|
312
|
-
localWs.close(1000, '服务器已关闭连接');
|
|
313
|
-
}
|
|
314
|
-
this.cleanupWsConnection(connectionId);
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
|
-
* 清理 WebSocket 连接资源。
|
|
318
|
-
*/
|
|
319
|
-
cleanupWsConnection(connectionId) {
|
|
320
|
-
const localWs = this.localWsConnections.get(connectionId);
|
|
321
|
-
if (localWs) {
|
|
322
|
-
localWs.removeAllListeners();
|
|
208
|
+
this.closedConnections.add(connectionId);
|
|
209
|
+
// TCP 连接
|
|
210
|
+
const socket = this.localTcpConnections.get(connectionId);
|
|
211
|
+
if (socket) {
|
|
212
|
+
socket.destroy();
|
|
213
|
+
this.localTcpConnections.delete(connectionId);
|
|
214
|
+
this.pendingDataBuffers.delete(connectionId);
|
|
215
|
+
if (this.backedUpConnections.delete(connectionId) && this.backedUpConnections.size === 0) {
|
|
216
|
+
this.dataChannel.getTcpSocket()?.resume();
|
|
217
|
+
}
|
|
323
218
|
}
|
|
324
|
-
|
|
219
|
+
// UDP 连接
|
|
220
|
+
this.cleanupUdpSocket(connectionId);
|
|
325
221
|
}
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
222
|
+
cleanupUdpSocket(connectionId) {
|
|
223
|
+
const entry = this.localUdpSockets.get(connectionId);
|
|
224
|
+
if (entry) {
|
|
225
|
+
clearTimeout(entry.timer);
|
|
226
|
+
entry.socket.close();
|
|
227
|
+
this.localUdpSockets.delete(connectionId);
|
|
332
228
|
}
|
|
333
|
-
const filtered = {};
|
|
334
|
-
const hopByHopHeaders = [
|
|
335
|
-
'connection',
|
|
336
|
-
'keep-alive',
|
|
337
|
-
'proxy-authenticate',
|
|
338
|
-
'proxy-authorization',
|
|
339
|
-
'te',
|
|
340
|
-
'trailers',
|
|
341
|
-
'transfer-encoding',
|
|
342
|
-
'upgrade',
|
|
343
|
-
];
|
|
344
|
-
for (const [key, value] of Object.entries(headers)) {
|
|
345
|
-
if (!hopByHopHeaders.includes(key.toLowerCase()) && value !== undefined) {
|
|
346
|
-
filtered[key] = Array.isArray(value) ? value.join(', ') : value;
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
return filtered;
|
|
350
229
|
}
|
|
351
230
|
/**
|
|
352
|
-
*
|
|
231
|
+
* 销毁处理器,释放所有资源
|
|
353
232
|
*/
|
|
354
233
|
destroy() {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
this.
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
this.
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
ws.close(1000, '处理器已销毁');
|
|
368
|
-
}
|
|
369
|
-
this.localWsConnections.clear();
|
|
234
|
+
for (const socket of this.localTcpConnections.values()) {
|
|
235
|
+
socket.destroy();
|
|
236
|
+
}
|
|
237
|
+
this.localTcpConnections.clear();
|
|
238
|
+
for (const entry of this.localUdpSockets.values()) {
|
|
239
|
+
clearTimeout(entry.timer);
|
|
240
|
+
entry.socket.close();
|
|
241
|
+
}
|
|
242
|
+
this.localUdpSockets.clear();
|
|
243
|
+
this.pendingDataBuffers.clear();
|
|
244
|
+
this.closedConnections.clear();
|
|
245
|
+
this.backedUpConnections.clear();
|
|
370
246
|
this.removeAllListeners();
|
|
371
247
|
}
|
|
372
248
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-handler.js","sourceRoot":"","sources":["../../src/handlers/unified-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unified-handler.js","sourceRoot":"","sources":["../../src/handlers/unified-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,9 @@ export { Controller } from './controller.js';
|
|
|
15
15
|
export { ProxyManager } from './proxy-manager.js';
|
|
16
16
|
export { AdminServer } from './admin-server.js';
|
|
17
17
|
export { UnifiedHandler } from './handlers/unified-handler.js';
|
|
18
|
-
export
|
|
18
|
+
export { IpcHandler } from './ipc-handler.js';
|
|
19
|
+
export { ForwardProxy } from './forward-proxy.js';
|
|
20
|
+
export type { ClientConfig, ProxyConfig, ForwardProxyConfig } from '@feng3d/chuantou-shared';
|
|
19
21
|
/**
|
|
20
22
|
* 导出运行函数供 CLI 使用。
|
|
21
23
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA8BH;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAqP7F;;;;;;GAMG;AACH,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzC"}
|