import { PacificaWebSocketClient } from './src/exchanges/pacifica/PacificaWebSocketClient.js' import { PacificaWebSocketAdapter } from './src/exchanges/pacifica/PacificaWebSocketAdapter.js' import { logger } from './src/utils/logger.js' /** * 测试Pacifica WebSocket订阅功能 * 专门测试account_info和account_positions订阅 */ async function testWebSocketSubscriptions() { console.log('🚀 开始Pacifica WebSocket订阅测试...\n') const adapter = new PacificaWebSocketAdapter('wss://ws.pacifica.fi/ws') const testAccount = process.env.PACIFICA_ACCOUNT_1 || '3v2fE8y6uPVu5pmNCpmygpGNgdP3kGL3SMoVa86uvLLu' try { console.log('📡 初始化WebSocket适配器...') await adapter.initialize() console.log('✅ 适配器初始化成功!') console.log(`🔗 连接状态: ${adapter.isConnected()}`) // 测试1: 账户余额订阅 console.log('\n💰 测试账户余额订阅...') try { const balanceResult = await adapter.getBalances(testAccount) if (balanceResult.success) { console.log('✅ 账户余额订阅成功!') console.log('📊 余额数据:', { balance: balanceResult.data?.balance, available: balanceResult.data?.available, equity: balanceResult.data?.equity, marginUsed: balanceResult.data?.marginUsed, }) } else { console.log('❌ 账户余额订阅失败:', balanceResult.error) } } catch (error: any) { console.log('❌ 账户余额订阅异常:', error.message) } // 测试2: 账户仓位订阅 console.log('\n📊 测试账户仓位订阅...') try { const positionsResult = await adapter.getPositions(testAccount) if (positionsResult.success) { console.log('✅ 账户仓位订阅成功!') console.log('📊 仓位数据:', positionsResult.data) } else { console.log('❌ 账户仓位订阅失败:', positionsResult.error) } } catch (error: any) { console.log('❌ 账户仓位订阅异常:', error.message) } // 测试3: 连接状态检查 console.log('\n🔍 连接状态检查:') console.log(` WebSocket连接: ${adapter.isConnected() ? '✅ 已连接' : '❌ 断开'}`) console.log(` 消息队列长度: ${adapter.getQueueLength()}`) } catch (error: any) { console.error('❌ 测试过程中发生错误:', error.message) console.error('错误详情:', error) } finally { // 清理资源 try { await adapter.close() console.log('\n🧹 资源清理完成') } catch (error: any) { console.log('⚠️ 资源清理时发生错误:', error.message) } } console.log('\n✅ Pacifica WebSocket订阅测试完成!') } // 代理状态测试 async function testProxySubscriptionStatus() { console.log('\n🔍 代理订阅状态检查:') const proxyConfig = { enabled: process.env.PROXY_ENABLED === 'true', host: process.env.PROXY_HOST, port: process.env.PROXY_PORT, user: process.env.ASTER_PROXY_USER, hasSessionPrefix: !!process.env.ASTER_PROXY_SESSION_PREFIX, hasSessionSuffix: !!process.env.ASTER_PROXY_SESSION_SUFFIX, } console.log(' 配置状态:') console.log(` 代理启用: ${proxyConfig.enabled ? '✅' : '❌'}`) console.log(` 代理主机: ${proxyConfig.host || '未配置'}`) console.log(` 代理端口: ${proxyConfig.port || '未配置'}`) console.log(` 测试账户: ${process.env.PACIFICA_ACCOUNT_1?.substring(0, 8) + '...' || '未配置'}`) if (proxyConfig.enabled && proxyConfig.host && proxyConfig.user) { console.log(' ✅ 代理配置完整,支持WebSocket订阅测试') } else { console.log(' ⚠️ 代理配置不完整,WebSocket可能直连') } } // 运行测试 if (import.meta.url === `file://${process.argv[1]}`) { Promise.resolve() .then(() => testProxySubscriptionStatus()) .then(() => testWebSocketSubscriptions()) .catch(error => { console.error('🚨 测试失败:', error) process.exit(1) }) } export { testWebSocketSubscriptions }