import { PacificaWebSocketClient } from './src/exchanges/pacifica/PacificaWebSocketClient.js' import { logger } from './src/utils/logger.js' /** * 测试签名的WebSocket账户信息订阅 * 直接测试新的签名功能 */ async function testSignedWebSocketSubscription() { console.log('🚀 开始签名WebSocket订阅测试...\n') const testAccounts = [ { name: 'pacifica-1', account: process.env.PACIFICA_ACCOUNT_1, privateKey: process.env.PACIFICA_PRIVATE_KEY_1, }, ] for (const testAccount of testAccounts) { if (!testAccount.account || !testAccount.privateKey) { console.log(`⚠️ 跳过 ${testAccount.name}:环境变量未配置`) continue } console.log(`\n📊 测试账户: ${testAccount.name}`) console.log(` 账户ID: ${testAccount.account.substring(0, 8)}...`) console.log(` 私钥: ${testAccount.privateKey.substring(0, 8)}...`) // 创建带签名功能的WebSocket客户端 const wsClient = new PacificaWebSocketClient( 'wss://ws.pacifica.fi/ws', testAccount.account, testAccount.privateKey ) try { console.log('📡 连接WebSocket...') await wsClient.connect() console.log(`✅ WebSocket连接状态: ${wsClient.isConnectionOpen()}`) // 测试签名的账户余额订阅 console.log('\n💰 测试签名账户余额订阅...') const startTime = Date.now() try { const balanceResult = await wsClient.getSignedAccountBalance() const duration = Date.now() - startTime console.log(`✅ 签名余额订阅成功! 耗时: ${duration}ms`) console.log('📊 响应数据:', { status: balanceResult.status, statusText: balanceResult.statusText, hasData: !!balanceResult.data, dataType: typeof balanceResult.data, dataKeys: balanceResult.data ? Object.keys(balanceResult.data) : [], dataPreview: JSON.stringify(balanceResult.data).substring(0, 200), }) } catch (error: any) { const duration = Date.now() - startTime console.log(`❌ 签名余额订阅失败: ${error.message} (耗时: ${duration}ms)`) } // 测试签名的账户仓位订阅 console.log('\n📊 测试签名账户仓位订阅...') const posStartTime = Date.now() try { const positionsResult = await wsClient.getSignedAccountPositions() const posDuration = Date.now() - posStartTime console.log(`✅ 签名仓位订阅成功! 耗时: ${posDuration}ms`) console.log('📊 响应数据:', { status: positionsResult.status, statusText: positionsResult.statusText, hasData: !!positionsResult.data, dataType: typeof positionsResult.data, dataKeys: positionsResult.data ? Object.keys(positionsResult.data) : [], dataPreview: JSON.stringify(positionsResult.data).substring(0, 200), }) } catch (error: any) { const posDuration = Date.now() - posStartTime console.log(`❌ 签名仓位订阅失败: ${error.message} (耗时: ${posDuration}ms)`) } // 连接状态检查 console.log('\n🔍 连接状态检查:') console.log(` WebSocket连接: ${wsClient.isConnectionOpen() ? '✅ 已连接' : '❌ 断开'}`) console.log(` 消息队列长度: ${wsClient.getQueueLength()}`) } catch (error: any) { console.error(`❌ ${testAccount.name} 测试失败:`, error.message) } finally { // 清理资源 try { await wsClient.close() console.log(`🧹 ${testAccount.name} 资源清理完成`) } catch (error: any) { console.log(`⚠️ ${testAccount.name} 资源清理时发生错误:`, error.message) } } } console.log('\n✅ 签名WebSocket订阅测试完成!') } // 签名调试 async function debugSignature() { console.log('🔍 签名功能调试:') const testAccount = process.env.PACIFICA_ACCOUNT_1 const testPrivateKey = process.env.PACIFICA_PRIVATE_KEY_1 if (!testAccount || !testPrivateKey) { console.log('⚠️ 环境变量未配置,跳过签名调试') return } try { // 创建WebSocket客户端测试签名 const wsClient = new PacificaWebSocketClient( 'wss://ws.pacifica.fi/ws', testAccount, testPrivateKey ) console.log(' 账户:', testAccount.substring(0, 8) + '...') console.log(' 私钥:', testPrivateKey.substring(0, 8) + '...') console.log(' WebSocket URL: wss://ws.pacifica.fi/ws') console.log(' ✅ 签名客户端创建成功') } catch (error: any) { console.log(' ❌ 签名客户端创建失败:', error.message) } } // 运行测试 if (import.meta.url === `file://${process.argv[1]}`) { Promise.resolve() .then(() => debugSignature()) .then(() => testSignedWebSocketSubscription()) .catch(error => { console.error('🚨 测试失败:', error) process.exit(1) }) } export { testSignedWebSocketSubscription }