UNPKG

qq-official-bot

Version:
266 lines (265 loc) 10.8 kB
"use strict"; /** * 新的类继承接收器架构使用示例 * 展示如何使用重构后的接收器系统 */ Object.defineProperty(exports, "__esModule", { value: true }); exports.runAllExamples = runAllExamples; const qqBot_1 = require("../../qqBot"); const receiver_1 = require("../../receiver"); const ModernSessionManager_1 = require("../ModernSessionManager"); // ============================================================================ // 示例1: 使用新的WebSocket接收器 // ============================================================================ async function exampleWebSocketReceiver() { console.log('=== WebSocket接收器示例 ==='); // 创建WebSocket接收器配置 const wsConfig = receiver_1.ReceiverConfigBuilder.websocket({ heartbeatInterval: 30000, // 30秒心跳 maxRetries: 5, // 最大重试5次 reconnectDelay: 2000 // 重连延迟2秒 }); // 创建WebSocket接收器 const wsReceiver = receiver_1.ReceiverFactory.createWebSocketReceiver(wsConfig); // 监听接收器事件 wsReceiver.on('ready', () => { console.log('WebSocket接收器已就绪'); }); wsReceiver.on('packet', (packet) => { console.log('收到数据包:', packet.t); }); wsReceiver.on('error', (error) => { console.error('WebSocket接收器错误:', error.message); }); wsReceiver.on('close', (code, reason) => { console.log(`WebSocket接收器关闭: ${code} - ${reason}`); }); // 健康检查 const health = wsReceiver.healthCheck(); console.log('WebSocket接收器健康状态:', health); // 获取配置信息 const config = wsReceiver.getConfig(); console.log('WebSocket接收器配置:', config); } // ============================================================================ // 示例2: 使用新的Webhook接收器 // ============================================================================ async function exampleWebhookReceiver() { console.log('=== Webhook接收器示例 ==='); // 创建Webhook接收器配置 const webhookConfig = receiver_1.ReceiverConfigBuilder.webhook({ port: 3000, path: '/qq-webhook', timeout: 30000 }); // 创建Webhook接收器 const webhookReceiver = receiver_1.ReceiverFactory.createWebhookReceiver(webhookConfig); // 监听接收器事件 webhookReceiver.on('ready', () => { console.log('Webhook接收器已启动,监听端口3000'); }); webhookReceiver.on('packet', (packet) => { console.log('收到Webhook事件:', packet.t); }); webhookReceiver.on('error', (error) => { console.error('Webhook接收器错误:', error.message); }); // 模拟启动(需要实际的session实例) // await webhookReceiver.start(sessionManager); console.log('Webhook接收器类型:', webhookReceiver.getType()); console.log('Webhook接收器配置:', webhookReceiver.getConfig()); } // ============================================================================ // 示例3: 使用新的Middleware接收器 // ============================================================================ async function exampleMiddlewareReceiver() { console.log('=== Middleware接收器示例 ==='); // 创建Express Middleware接收器配置 const middlewareConfig = receiver_1.ReceiverConfigBuilder.middleware({ platform: 'express', timeout: 30000 }); // 创建Middleware接收器 const middlewareReceiver = receiver_1.ReceiverFactory.createMiddlewareReceiver(middlewareConfig); // 监听接收器事件 middlewareReceiver.on('ready', () => { console.log('Middleware接收器已就绪'); }); middlewareReceiver.on('packet', (packet) => { console.log('收到中间件事件:', packet.t); }); // 获取中间件函数(用于Express应用) // const middleware = middlewareReceiver.getMiddleware(); // app.use('/webhook', middleware); console.log('Middleware接收器类型:', middlewareReceiver.getType()); console.log('Middleware接收器配置:', middlewareReceiver.getConfig()); } // ============================================================================ // 示例4: 使用现代化会话管理器 // ============================================================================ async function exampleModernSessionManager() { console.log('=== 现代化会话管理器示例 ==='); // 创建Bot实例(WebSocket模式) const bot = new qqBot_1.QQBot({ appid: 'your_app_id', secret: 'your_secret', mode: 'websocket' }); // 创建现代化会话管理器 const modernSession = new ModernSessionManager_1.ModernSessionManager(bot); // 监听会话事件 modernSession.on('ready', () => { console.log('现代化会话管理器已就绪'); }); modernSession.on('error', (error) => { console.error('会话管理器错误:', error); }); modernSession.on('close', (code, reason) => { console.log(`会话关闭: ${code} - ${reason}`); }); // 启动会话管理器 try { await modernSession.start(); console.log('会话管理器启动成功'); // 获取接收器健康状态 const health = modernSession.getReceiverHealth(); console.log('接收器健康状态:', health); // 获取接收器配置 const config = modernSession.getReceiverConfig(); console.log('接收器配置:', config); } catch (error) { console.error('会话管理器启动失败:', error); } } // ============================================================================ // 示例5: 使用接收器管理器 // ============================================================================ async function exampleReceiverManager() { console.log('=== 接收器管理器示例 ==='); const manager = ModernSessionManager_1.ReceiverManager.getInstance(); // 创建多个接收器 const wsReceiver = receiver_1.ReceiverFactory.createWebSocketReceiver(); const webhookReceiver = receiver_1.ReceiverFactory.createWebhookReceiver(receiver_1.ReceiverConfigBuilder.webhook({ port: 3000, path: '/webhook' })); // 注册接收器 manager.registerReceiver('main-websocket', wsReceiver); manager.registerReceiver('backup-webhook', webhookReceiver); // 获取所有接收器的健康状态 const allHealth = manager.getAllHealthStatus(); console.log('所有接收器健康状态:', allHealth); // 获取所有接收器的配置 const allConfigs = manager.getAllConfigs(); console.log('所有接收器配置:', allConfigs); // 获取特定接收器 const mainReceiver = manager.getReceiver('main-websocket'); if (mainReceiver) { console.log('主WebSocket接收器类型:', mainReceiver.getType()); } } // ============================================================================ // 示例6: 接收器继承和扩展 // ============================================================================ // 自定义WebSocket接收器,扩展基础功能 class CustomWebSocketReceiver extends receiver_1.WebSocketReceiver { constructor() { super(...arguments); this.messageCount = 0; } handlePacket(packet) { super.handlePacket(packet); this.messageCount++; console.log(`已处理 ${this.messageCount} 条消息`); } getMessageCount() { return this.messageCount; } // 重写健康检查,添加自定义信息 healthCheck() { const baseHealth = super.healthCheck(); return { ...baseHealth, details: { ...baseHealth.details, messageCount: this.messageCount, customFeature: 'enabled' } }; } } async function exampleCustomReceiver() { console.log('=== 自定义接收器示例 ==='); const customReceiver = new CustomWebSocketReceiver(); // 使用自定义功能 console.log('消息计数:', customReceiver.getMessageCount()); // 健康检查包含自定义信息 const health = customReceiver.healthCheck(); console.log('自定义接收器健康状态:', health); } // ============================================================================ // 示例7: 错误处理和重连策略 // ============================================================================ async function exampleErrorHandling() { console.log('=== 错误处理示例 ==='); // 创建带有自定义重连策略的WebSocket接收器 const wsConfig = receiver_1.ReceiverConfigBuilder.websocket({ heartbeatInterval: 30000, maxRetries: 3, reconnectDelay: 5000 }); const wsReceiver = receiver_1.ReceiverFactory.createWebSocketReceiver(wsConfig); // 设置错误处理 wsReceiver.on('error', (error) => { console.error('接收器错误:', error.message); // 可以实现自定义错误处理逻辑 if (error.message.includes('网络')) { console.log('检测到网络错误,将采用备用连接策略'); } }); wsReceiver.on('close', (code, reason) => { console.log(`连接关闭: ${code} - ${reason}`); // 根据关闭代码决定是否重连 if (code && code < 4000) { console.log('正常关闭,无需重连'); } else { console.log('异常关闭,将自动重连'); } }); // 定期健康检查 setInterval(() => { const health = wsReceiver.healthCheck(); if (health.status === 'unhealthy') { console.warn('接收器健康状态异常:', health.details); } }, 60000); // 每分钟检查一次 } // ============================================================================ // 运行所有示例 // ============================================================================ async function runAllExamples() { console.log('开始运行接收器架构示例...\n'); try { await exampleWebSocketReceiver(); console.log(); await exampleWebhookReceiver(); console.log(); await exampleMiddlewareReceiver(); console.log(); await exampleModernSessionManager(); console.log(); await exampleReceiverManager(); console.log(); await exampleCustomReceiver(); console.log(); await exampleErrorHandling(); console.log(); console.log('所有示例运行完成!'); } catch (error) { console.error('运行示例时出错:', error); } } // 如果直接运行此文件 if (require.main === module) { runAllExamples(); }