websocket-proxy-http-request 0.0.1

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 (50) hide show
  1. package/README.md +377 -0
  2. package/bin/README.md +57 -0
  3. package/bin/ws-client-agent.js +134 -0
  4. package/bin/ws-proxy-server.js +113 -0
  5. package/bin/ws-proxy.js +83 -0
  6. package/dist/mock/server.d.ts +7 -0
  7. package/dist/mock/server.d.ts.map +1 -0
  8. package/dist/mock/server.js +212 -0
  9. package/dist/mock/server.js.map +1 -0
  10. package/dist/src/client-agent.d.ts +41 -0
  11. package/dist/src/client-agent.d.ts.map +1 -0
  12. package/dist/src/client-agent.js +303 -0
  13. package/dist/src/client-agent.js.map +1 -0
  14. package/dist/src/config/client-agent.config.d.ts +3 -0
  15. package/dist/src/config/client-agent.config.d.ts.map +1 -0
  16. package/dist/src/config/client-agent.config.js +24 -0
  17. package/dist/src/config/client-agent.config.js.map +1 -0
  18. package/dist/src/config/logger.config.d.ts +3 -0
  19. package/dist/src/config/logger.config.d.ts.map +1 -0
  20. package/dist/src/config/logger.config.js +42 -0
  21. package/dist/src/config/logger.config.js.map +1 -0
  22. package/dist/src/config/proxy-server.config.d.ts +3 -0
  23. package/dist/src/config/proxy-server.config.d.ts.map +1 -0
  24. package/dist/src/config/proxy-server.config.js +23 -0
  25. package/dist/src/config/proxy-server.config.js.map +1 -0
  26. package/dist/src/proxy-server.d.ts +51 -0
  27. package/dist/src/proxy-server.d.ts.map +1 -0
  28. package/dist/src/proxy-server.js +556 -0
  29. package/dist/src/proxy-server.js.map +1 -0
  30. package/dist/src/types/config.d.ts +55 -0
  31. package/dist/src/types/config.d.ts.map +1 -0
  32. package/dist/src/types/config.js +6 -0
  33. package/dist/src/types/config.js.map +1 -0
  34. package/dist/src/types/protocol.d.ts +112 -0
  35. package/dist/src/types/protocol.d.ts.map +1 -0
  36. package/dist/src/types/protocol.js +29 -0
  37. package/dist/src/types/protocol.js.map +1 -0
  38. package/dist/src/utils/args-parser.d.ts +23 -0
  39. package/dist/src/utils/args-parser.d.ts.map +1 -0
  40. package/dist/src/utils/args-parser.js +74 -0
  41. package/dist/src/utils/args-parser.js.map +1 -0
  42. package/dist/src/utils/id-generator.d.ts +12 -0
  43. package/dist/src/utils/id-generator.d.ts.map +1 -0
  44. package/dist/src/utils/id-generator.js +20 -0
  45. package/dist/src/utils/id-generator.js.map +1 -0
  46. package/dist/src/utils/logger.d.ts +31 -0
  47. package/dist/src/utils/logger.d.ts.map +1 -0
  48. package/dist/src/utils/logger.js +159 -0
  49. package/dist/src/utils/logger.js.map +1 -0
  50. package/package.json +65 -0
@@ -0,0 +1,556 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const express_1 = __importDefault(require("express"));
40
+ const ws_1 = require("ws");
41
+ const http = __importStar(require("http"));
42
+ const proxy_server_config_1 = require("./config/proxy-server.config");
43
+ const logger_1 = require("./utils/logger");
44
+ const id_generator_1 = require("./utils/id-generator");
45
+ const protocol_1 = require("./types/protocol");
46
+ const httpLogger = (0, logger_1.getLogger)('proxy.http');
47
+ const wsLogger = (0, logger_1.getLogger)('proxy.ws');
48
+ const authLogger = (0, logger_1.getLogger)('proxy.auth');
49
+ const messageLogger = (0, logger_1.getLogger)('proxy.message');
50
+ /**
51
+ * 代理服务器
52
+ */
53
+ class ProxyServer {
54
+ constructor() {
55
+ this.clients = new Map();
56
+ this.pendingRequests = new Map();
57
+ this.app = (0, express_1.default)();
58
+ this.app.use(express_1.default.json());
59
+ this.app.use(express_1.default.urlencoded({ extended: true }));
60
+ // 创建HTTP服务器
61
+ this.httpServer = http.createServer(this.app);
62
+ // 创建WebSocket服务器
63
+ this.wss = new ws_1.WebSocketServer({ server: this.httpServer });
64
+ this.setupRoutes();
65
+ this.setupWebSocket();
66
+ this.startHeartbeat();
67
+ }
68
+ /**
69
+ * 设置HTTP路由
70
+ */
71
+ setupRoutes() {
72
+ // 健康检查
73
+ this.app.get('/health', (req, res) => {
74
+ const connectedClients = Array.from(this.clients.values())
75
+ .filter(client => client.authenticated && client.ws.readyState === ws_1.WebSocket.OPEN)
76
+ .map(client => ({
77
+ clientId: client.clientId,
78
+ connectedAt: client.connectedAt || 'unknown',
79
+ lastHeartbeat: client.lastHeartbeat,
80
+ isAlive: Date.now() - client.lastHeartbeat < proxy_server_config_1.proxyServerConfig.heartbeatTimeout,
81
+ }));
82
+ res.json({
83
+ status: 'ok',
84
+ timestamp: new Date().toISOString(),
85
+ uptime: process.uptime(),
86
+ server: {
87
+ proxyPort: proxy_server_config_1.proxyServerConfig.proxyPort,
88
+ wsPort: proxy_server_config_1.proxyServerConfig.wsPort,
89
+ authEnabled: proxy_server_config_1.proxyServerConfig.authEnabled,
90
+ },
91
+ clients: {
92
+ total: this.clients.size,
93
+ connected: connectedClients.length,
94
+ list: connectedClients,
95
+ },
96
+ requests: {
97
+ pending: this.pendingRequests.size,
98
+ },
99
+ memory: {
100
+ used: Math.round(process.memoryUsage().heapUsed / 1024 / 1024),
101
+ total: Math.round(process.memoryUsage().heapTotal / 1024 / 1024),
102
+ unit: 'MB',
103
+ },
104
+ });
105
+ });
106
+ // 代理端点:POST /proxy
107
+ this.app.post('/proxy', async (req, res) => {
108
+ const requestId = (0, id_generator_1.generateRequestId)();
109
+ const startTime = Date.now();
110
+ // 打印接收到的请求
111
+ console.log('\n' + '='.repeat(60));
112
+ console.log(`📥 [${new Date().toISOString()}] 收到代理请求 [${requestId}]`);
113
+ console.log('='.repeat(60));
114
+ console.log('请求体:', JSON.stringify(req.body, null, 2));
115
+ console.log('请求头:', JSON.stringify(req.headers, null, 2));
116
+ console.log('='.repeat(60));
117
+ // 记录到日志系统
118
+ httpLogger.info('收到代理请求', {
119
+ requestId,
120
+ method: req.method,
121
+ path: req.path,
122
+ body: req.body,
123
+ headers: req.headers,
124
+ ip: req.ip || req.socket.remoteAddress,
125
+ });
126
+ try {
127
+ // 验证请求体
128
+ const { url, method, params, body, clientId } = req.body;
129
+ if (!url) {
130
+ const errorMsg = '缺少必需字段: url';
131
+ console.log(`❌ 错误: ${errorMsg}`);
132
+ httpLogger.warn('请求验证失败', {
133
+ requestId,
134
+ error: errorMsg,
135
+ body: req.body,
136
+ });
137
+ return res.status(400).json({ error: errorMsg });
138
+ }
139
+ if (!method) {
140
+ const errorMsg = '缺少必需字段: method';
141
+ console.log(`❌ 错误: ${errorMsg}`);
142
+ httpLogger.warn('请求验证失败', {
143
+ requestId,
144
+ error: errorMsg,
145
+ body: req.body,
146
+ });
147
+ return res.status(400).json({ error: errorMsg });
148
+ }
149
+ // 检查是否有可用的客户端(如果指定了clientId,则只查找该客户端)
150
+ const client = this.getAvailableClient(clientId);
151
+ if (!client) {
152
+ if (clientId) {
153
+ console.log(`❌ 错误: 客户端 ${clientId} 不可用或不存在`);
154
+ httpLogger.error('指定的客户端不可用', { requestId, clientId });
155
+ return res.status(503).json({
156
+ error: `客户端 ${clientId} 不可用或不存在`,
157
+ availableClients: Array.from(this.clients.keys())
158
+ });
159
+ }
160
+ else {
161
+ console.log('❌ 错误: 没有可用的内网客户端');
162
+ httpLogger.error('没有可用的客户端', { requestId });
163
+ return res.status(503).json({ error: '没有可用的内网客户端' });
164
+ }
165
+ }
166
+ // 如果指定了clientId,打印使用的客户端
167
+ if (clientId) {
168
+ console.log(`🎯 使用指定客户端: ${clientId}`);
169
+ httpLogger.info('使用指定客户端', { requestId, clientId });
170
+ }
171
+ // 构建完整URL(如果有params,添加到查询字符串)
172
+ let targetUrl = url;
173
+ if (params && typeof params === 'object') {
174
+ const queryString = new URLSearchParams(Object.entries(params).reduce((acc, [key, value]) => {
175
+ acc[key] = String(value);
176
+ return acc;
177
+ }, {})).toString();
178
+ if (queryString) {
179
+ const separator = url.includes('?') ? '&' : '?';
180
+ targetUrl = `${url}${separator}${queryString}`;
181
+ }
182
+ }
183
+ console.log(`📤 转发到内网: ${method.toUpperCase()} ${targetUrl}`);
184
+ if (body) {
185
+ console.log('请求体:', JSON.stringify(body, null, 2));
186
+ }
187
+ // 记录转发信息到日志
188
+ httpLogger.info('转发请求到内网', {
189
+ requestId,
190
+ method: method.toUpperCase(),
191
+ url: targetUrl,
192
+ originalUrl: url,
193
+ params,
194
+ hasBody: !!body,
195
+ clientId: client.clientId,
196
+ requestedClientId: clientId,
197
+ });
198
+ // 构造请求消息
199
+ const requestMessage = {
200
+ type: protocol_1.EMessageType.REQUEST,
201
+ requestId,
202
+ method: method.toUpperCase(),
203
+ url: targetUrl,
204
+ params,
205
+ headers: req.headers,
206
+ body: body || undefined,
207
+ timestamp: Date.now(),
208
+ };
209
+ messageLogger.info('装箱请求消息', {
210
+ requestId,
211
+ messageType: requestMessage.type,
212
+ method: requestMessage.method,
213
+ url: targetUrl,
214
+ params,
215
+ bodySize: body ? JSON.stringify(body).length : 0,
216
+ });
217
+ // 发送到客户端并等待响应
218
+ const response = await this.sendRequestToClient(client, requestMessage);
219
+ const duration = Date.now() - startTime;
220
+ // 打印响应
221
+ console.log('\n' + '='.repeat(60));
222
+ console.log(`📥 [${new Date().toISOString()}] 收到内网响应 [${requestId}]`);
223
+ console.log('='.repeat(60));
224
+ console.log(`状态码: ${response.status}`);
225
+ console.log('响应头:', JSON.stringify(response.headers, null, 2));
226
+ console.log('响应体:', JSON.stringify(response.body, null, 2));
227
+ console.log(`耗时: ${duration}ms`);
228
+ console.log('='.repeat(60) + '\n');
229
+ // 记录响应到日志系统
230
+ messageLogger.info('收到响应消息', {
231
+ requestId,
232
+ status: response.status,
233
+ headers: response.headers,
234
+ bodySize: response.body ? JSON.stringify(response.body).length : 0,
235
+ duration,
236
+ });
237
+ // 返回响应
238
+ res.status(response.status).set(response.headers).json(response.body);
239
+ httpLogger.info('HTTP响应已发送', {
240
+ requestId,
241
+ status: response.status,
242
+ duration,
243
+ responseHeaders: response.headers,
244
+ responseBodySize: response.body ? JSON.stringify(response.body).length : 0,
245
+ });
246
+ }
247
+ catch (error) {
248
+ const duration = Date.now() - startTime;
249
+ console.log('\n' + '='.repeat(60));
250
+ console.log(`❌ [${new Date().toISOString()}] 请求处理失败 [${requestId}]`);
251
+ console.log('='.repeat(60));
252
+ console.log('错误:', error.message);
253
+ if (error.stack) {
254
+ console.log('堆栈:', error.stack);
255
+ }
256
+ console.log(`耗时: ${duration}ms`);
257
+ console.log('='.repeat(60) + '\n');
258
+ // 记录错误到日志系统
259
+ httpLogger.error('请求处理失败', {
260
+ requestId,
261
+ error: error.message,
262
+ stack: error.stack,
263
+ duration,
264
+ body: req.body,
265
+ });
266
+ res.status(500).json({ error: error.message });
267
+ }
268
+ });
269
+ }
270
+ /**
271
+ * 设置WebSocket
272
+ */
273
+ setupWebSocket() {
274
+ this.wss.on('connection', (ws, req) => {
275
+ wsLogger.info('新客户端连接', {
276
+ remoteAddress: req.socket.remoteAddress,
277
+ });
278
+ let clientId = '';
279
+ let authenticated = false;
280
+ ws.on('message', (data) => {
281
+ try {
282
+ const message = JSON.parse(data.toString());
283
+ // 认证消息
284
+ if (message.type === protocol_1.EMessageType.AUTH) {
285
+ this.handleAuth(ws, message).then((result) => {
286
+ if (result.success) {
287
+ clientId = result.clientId;
288
+ authenticated = true;
289
+ // 保存客户端连接
290
+ this.clients.set(clientId, {
291
+ ws,
292
+ clientId,
293
+ authenticated: true,
294
+ lastHeartbeat: Date.now(),
295
+ connectedAt: Date.now(),
296
+ });
297
+ wsLogger.info('客户端认证成功', { clientId });
298
+ }
299
+ });
300
+ return;
301
+ }
302
+ // 未认证的连接
303
+ if (!authenticated && proxy_server_config_1.proxyServerConfig.authEnabled) {
304
+ authLogger.warn('未认证的连接尝试发送消息');
305
+ ws.close(1008, '未认证');
306
+ return;
307
+ }
308
+ // 处理响应消息
309
+ if (message.type === protocol_1.EMessageType.RESPONSE) {
310
+ this.handleResponse(message);
311
+ }
312
+ // 处理心跳
313
+ if (message.type === protocol_1.EMessageType.HEARTBEAT_PONG) {
314
+ const client = this.clients.get(clientId);
315
+ if (client) {
316
+ client.lastHeartbeat = Date.now();
317
+ }
318
+ }
319
+ }
320
+ catch (error) {
321
+ wsLogger.error('消息解析失败', { error: error.message });
322
+ }
323
+ });
324
+ ws.on('close', () => {
325
+ if (clientId) {
326
+ this.clients.delete(clientId);
327
+ wsLogger.info('客户端断开连接', { clientId });
328
+ }
329
+ });
330
+ ws.on('error', (error) => {
331
+ wsLogger.error('WebSocket错误', {
332
+ clientId,
333
+ error: error.message,
334
+ });
335
+ });
336
+ });
337
+ }
338
+ /**
339
+ * 处理认证
340
+ */
341
+ async handleAuth(ws, message) {
342
+ authLogger.info('收到认证请求', { clientId: message.clientId });
343
+ if (proxy_server_config_1.proxyServerConfig.authEnabled) {
344
+ if (message.token !== proxy_server_config_1.proxyServerConfig.authToken) {
345
+ authLogger.warn('认证失败:Token无效', { clientId: message.clientId });
346
+ const failedMessage = {
347
+ type: protocol_1.EMessageType.AUTH_FAILED,
348
+ message: 'Token无效',
349
+ timestamp: Date.now(),
350
+ };
351
+ ws.send(JSON.stringify(failedMessage));
352
+ ws.close(1008, '认证失败');
353
+ return { success: false };
354
+ }
355
+ }
356
+ const successMessage = {
357
+ type: protocol_1.EMessageType.AUTH_SUCCESS,
358
+ message: '认证成功',
359
+ timestamp: Date.now(),
360
+ };
361
+ ws.send(JSON.stringify(successMessage));
362
+ return { success: true, clientId: message.clientId };
363
+ }
364
+ /**
365
+ * 发送请求到客户端
366
+ */
367
+ sendRequestToClient(client, message) {
368
+ return new Promise((resolve, reject) => {
369
+ const timer = setTimeout(() => {
370
+ this.pendingRequests.delete(message.requestId);
371
+ const errorLogger = (0, logger_1.getLogger)('error.timeout');
372
+ errorLogger.error('请求超时', {
373
+ requestId: message.requestId,
374
+ timeout: proxy_server_config_1.proxyServerConfig.requestTimeout,
375
+ });
376
+ reject(new Error('请求超时'));
377
+ }, proxy_server_config_1.proxyServerConfig.requestTimeout);
378
+ this.pendingRequests.set(message.requestId, {
379
+ requestId: message.requestId,
380
+ resolve,
381
+ reject,
382
+ timer,
383
+ timestamp: Date.now(),
384
+ });
385
+ client.ws.send(JSON.stringify(message));
386
+ });
387
+ }
388
+ /**
389
+ * 处理响应
390
+ */
391
+ handleResponse(message) {
392
+ const pending = this.pendingRequests.get(message.requestId);
393
+ if (pending) {
394
+ clearTimeout(pending.timer);
395
+ this.pendingRequests.delete(message.requestId);
396
+ pending.resolve(message);
397
+ }
398
+ }
399
+ /**
400
+ * 获取可用客户端
401
+ * @param clientId 可选的客户端ID,如果指定则只返回该客户端
402
+ */
403
+ getAvailableClient(clientId) {
404
+ if (clientId) {
405
+ // 如果指定了clientId,尝试获取该客户端
406
+ const client = this.clients.get(clientId);
407
+ if (client && client.authenticated && client.ws.readyState === ws_1.WebSocket.OPEN) {
408
+ return client;
409
+ }
410
+ return null;
411
+ }
412
+ // 如果没有指定clientId,返回第一个可用客户端
413
+ for (const client of this.clients.values()) {
414
+ if (client.authenticated && client.ws.readyState === ws_1.WebSocket.OPEN) {
415
+ return client;
416
+ }
417
+ }
418
+ return null;
419
+ }
420
+ /**
421
+ * 启动心跳
422
+ */
423
+ startHeartbeat() {
424
+ this.heartbeatTimer = setInterval(() => {
425
+ const now = Date.now();
426
+ const heartbeatLogger = (0, logger_1.getLogger)('protocol.heartbeat');
427
+ for (const [clientId, client] of this.clients.entries()) {
428
+ // 检查超时
429
+ if (now - client.lastHeartbeat > proxy_server_config_1.proxyServerConfig.heartbeatTimeout) {
430
+ wsLogger.warn('客户端心跳超时,断开连接', { clientId });
431
+ client.ws.close(1000, '心跳超时');
432
+ this.clients.delete(clientId);
433
+ continue;
434
+ }
435
+ // 发送ping
436
+ if (client.ws.readyState === ws_1.WebSocket.OPEN) {
437
+ const pingMessage = {
438
+ type: protocol_1.EMessageType.HEARTBEAT_PING,
439
+ timestamp: Date.now(),
440
+ };
441
+ client.ws.send(JSON.stringify(pingMessage));
442
+ heartbeatLogger.debug('发送心跳ping', { clientId });
443
+ }
444
+ }
445
+ }, proxy_server_config_1.proxyServerConfig.heartbeatInterval);
446
+ }
447
+ /**
448
+ * 启动服务器
449
+ */
450
+ start() {
451
+ // 立即输出启动信息(在服务器启动前)
452
+ console.log('='.repeat(60));
453
+ console.log('🚀 正在启动 Proxy Server...');
454
+ console.log('='.repeat(60));
455
+ // 启动HTTP服务器
456
+ this.app.listen(proxy_server_config_1.proxyServerConfig.proxyPort, () => {
457
+ httpLogger.info(`HTTP代理服务器启动`, {
458
+ port: proxy_server_config_1.proxyServerConfig.proxyPort,
459
+ });
460
+ console.log(`✅ HTTP代理服务器已启动 - 端口: ${proxy_server_config_1.proxyServerConfig.proxyPort}`);
461
+ }).on('error', (err) => {
462
+ if (err.code === 'EADDRINUSE') {
463
+ console.error(`❌ 错误: 端口 ${proxy_server_config_1.proxyServerConfig.proxyPort} 已被占用`);
464
+ process.exit(1);
465
+ }
466
+ else {
467
+ console.error('❌ HTTP服务器启动失败:', err);
468
+ process.exit(1);
469
+ }
470
+ });
471
+ // 启动WebSocket服务器
472
+ this.httpServer.listen(proxy_server_config_1.proxyServerConfig.wsPort, () => {
473
+ wsLogger.info(`WebSocket服务器启动`, {
474
+ port: proxy_server_config_1.proxyServerConfig.wsPort,
475
+ });
476
+ console.log(`✅ WebSocket服务器已启动 - 端口: ${proxy_server_config_1.proxyServerConfig.wsPort}`);
477
+ // 启动心跳
478
+ this.startHeartbeat();
479
+ // 输出完整启动信息
480
+ console.log('='.repeat(60));
481
+ console.log('🚀 Proxy Server 已成功启动');
482
+ console.log('='.repeat(60));
483
+ console.log(`HTTP代理端口: ${proxy_server_config_1.proxyServerConfig.proxyPort}`);
484
+ console.log(`WebSocket端口: ${proxy_server_config_1.proxyServerConfig.wsPort}`);
485
+ console.log(`认证: ${proxy_server_config_1.proxyServerConfig.authEnabled ? '已启用' : '未启用'}`);
486
+ if (proxy_server_config_1.proxyServerConfig.authEnabled) {
487
+ const tokenPreview = proxy_server_config_1.proxyServerConfig.authToken.length > 10
488
+ ? proxy_server_config_1.proxyServerConfig.authToken.substring(0, 10) + '...'
489
+ : proxy_server_config_1.proxyServerConfig.authToken;
490
+ console.log(`认证Token: ${tokenPreview}`);
491
+ }
492
+ console.log('='.repeat(60));
493
+ console.log('等待连接... (按 Ctrl+C 退出)');
494
+ console.log('');
495
+ console.log('💡 提示:');
496
+ console.log(' - 启动服务器时使用 --token <token> 设置认证token');
497
+ console.log(' - 客户端启动时使用 --client-id <id> 设置客户端ID');
498
+ console.log(' - 请求时在body中添加 "clientId" 字段可指定特定客户端');
499
+ console.log('');
500
+ }).on('error', (err) => {
501
+ if (err.code === 'EADDRINUSE') {
502
+ console.error(`❌ 错误: 端口 ${proxy_server_config_1.proxyServerConfig.wsPort} 已被占用`);
503
+ process.exit(1);
504
+ }
505
+ else {
506
+ console.error('❌ WebSocket服务器启动失败:', err);
507
+ process.exit(1);
508
+ }
509
+ });
510
+ }
511
+ /**
512
+ * 停止服务器
513
+ */
514
+ stop() {
515
+ if (this.heartbeatTimer) {
516
+ clearInterval(this.heartbeatTimer);
517
+ }
518
+ this.wss.close();
519
+ this.httpServer.close();
520
+ }
521
+ }
522
+ // 启动服务器
523
+ if (require.main === module) {
524
+ try {
525
+ const server = new ProxyServer();
526
+ server.start();
527
+ // 优雅退出
528
+ process.on('SIGINT', () => {
529
+ console.log('\n正在关闭服务器...');
530
+ server.stop();
531
+ process.exit(0);
532
+ });
533
+ process.on('SIGTERM', () => {
534
+ console.log('\n收到终止信号,正在关闭服务器...');
535
+ server.stop();
536
+ process.exit(0);
537
+ });
538
+ // 捕获未处理的错误
539
+ process.on('uncaughtException', (err) => {
540
+ console.error('❌ 未捕获的异常:', err);
541
+ server.stop();
542
+ process.exit(1);
543
+ });
544
+ process.on('unhandledRejection', (reason, promise) => {
545
+ console.error('❌ 未处理的Promise拒绝:', reason);
546
+ server.stop();
547
+ process.exit(1);
548
+ });
549
+ }
550
+ catch (error) {
551
+ console.error('❌ 启动服务器失败:', error);
552
+ process.exit(1);
553
+ }
554
+ }
555
+ exports.default = ProxyServer;
556
+ //# sourceMappingURL=proxy-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../../src/proxy-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * 配置类型定义
3
+ */
4
+ /**
5
+ * 代理服务器配置
6
+ */
7
+ export interface IProxyServerConfig {
8
+ proxyPort: number;
9
+ wsPort: number;
10
+ authEnabled: boolean;
11
+ authToken: string;
12
+ requestTimeout: number;
13
+ maxConnections: number;
14
+ heartbeatInterval: number;
15
+ heartbeatTimeout: number;
16
+ }
17
+ /**
18
+ * 客户端配置
19
+ */
20
+ export interface IClientAgentConfig {
21
+ proxyWsUrl: string;
22
+ authToken: string;
23
+ localTargetHost: string;
24
+ localTargetPort: number;
25
+ localTargetProtocol: string;
26
+ clientId: string;
27
+ reconnectEnabled: boolean;
28
+ reconnectInterval: number;
29
+ reconnectMaxAttempts: number;
30
+ }
31
+ /**
32
+ * 日志配置
33
+ */
34
+ export interface ILoggerConfig {
35
+ level: string;
36
+ namespaces: {
37
+ [key: string]: {
38
+ enabled: boolean;
39
+ level: string;
40
+ };
41
+ };
42
+ transports: {
43
+ console: {
44
+ enabled: boolean;
45
+ colorize: boolean;
46
+ };
47
+ file: {
48
+ enabled: boolean;
49
+ dirname: string;
50
+ maxSize: string;
51
+ maxFiles: number;
52
+ };
53
+ };
54
+ }
55
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE;QACV,CAAC,GAAG,EAAE,MAAM,GAAG;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC;YACjB,QAAQ,EAAE,OAAO,CAAC;SACnB,CAAC;QACF,IAAI,EAAE;YACJ,OAAO,EAAE,OAAO,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;KACH,CAAC;CACH"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * 配置类型定义
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":";AAAA;;GAEG"}