| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- import { PacificaProxyClient } from './src/exchanges/pacifica/PacificaProxyClient.js'
- import { logger } from './src/utils/logger.js'
- /**
- * 测试WebSocket账户信息订阅功能
- * 验证账户余额和仓位的实时订阅
- */
- async function testWebSocketAccountSubscription() {
- console.log('🚀 开始WebSocket账户信息订阅测试...\n')
- const testAccounts = [
- {
- name: 'pacifica-1',
- account: process.env.PACIFICA_ACCOUNT_1,
- privateKey: process.env.PACIFICA_PRIVATE_KEY_1,
- },
- {
- name: 'pacifica-2',
- account: process.env.PACIFICA_ACCOUNT_2,
- privateKey: process.env.PACIFICA_PRIVATE_KEY_2,
- }
- ]
- 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)}...`)
- const client = new PacificaProxyClient({
- account: testAccount.account,
- privateKey: testAccount.privateKey,
- })
- try {
- // 启用WebSocket模式
- console.log('🔧 启用WebSocket模式...')
- client.setWebSocketEnabled(true)
- // 初始化WebSocket连接
- console.log('📡 初始化WebSocket连接...')
- await client.initializeWebSocket()
- console.log(`✅ WebSocket连接状态: ${client.isWebSocketConnected()}`)
- // 测试WebSocket账户余额订阅
- console.log('\n💰 测试账户余额WebSocket订阅...')
- const startTime = Date.now()
- try {
- const balanceResult = await client.getBalances()
- const duration = Date.now() - startTime
- if (balanceResult.success) {
- console.log(`✅ 余额订阅成功! 耗时: ${duration}ms`)
- console.log('📊 余额数据:', {
- balance: balanceResult.data?.balance || balanceResult.data?.b,
- available: balanceResult.data?.available || balanceResult.data?.as,
- equity: balanceResult.data?.equity || balanceResult.data?.ae,
- marginUsed: balanceResult.data?.marginUsed || balanceResult.data?.mu,
- pendingBalance: balanceResult.data?.pendingBalance || balanceResult.data?.pb,
- })
- } else {
- console.log(`❌ 余额订阅失败: ${balanceResult.error}`)
- }
- } catch (error: any) {
- console.log(`❌ 余额订阅异常: ${error.message}`)
- }
- // 测试WebSocket账户仓位订阅
- console.log('\n📊 测试账户仓位WebSocket订阅...')
- const posStartTime = Date.now()
- try {
- const positionsResult = await client.getPositions()
- const posDuration = Date.now() - posStartTime
- if (positionsResult.success) {
- console.log(`✅ 仓位订阅成功! 耗时: ${posDuration}ms`)
- console.log('📊 仓位数据:', {
- type: typeof positionsResult.data,
- length: Array.isArray(positionsResult.data) ? positionsResult.data.length : 'N/A',
- sample: positionsResult.data,
- })
- } else {
- console.log(`❌ 仓位订阅失败: ${positionsResult.error}`)
- }
- } catch (error: any) {
- console.log(`❌ 仓位订阅异常: ${error.message}`)
- }
- // 连接状态检查
- console.log('\n🔍 连接状态检查:')
- console.log(` WebSocket连接: ${client.isWebSocketConnected() ? '✅ 已连接' : '❌ 断开'}`)
- console.log(` 消息队列长度: ${client.getWebSocketQueueLength()}`)
- } catch (error: any) {
- console.error(`❌ ${testAccount.name} 测试失败:`, error.message)
- } finally {
- // 清理资源
- try {
- await client.close()
- console.log(`🧹 ${testAccount.name} 资源清理完成`)
- } catch (error: any) {
- console.log(`⚠️ ${testAccount.name} 资源清理时发生错误:`, error.message)
- }
- }
- }
- console.log('\n✅ WebSocket账户信息订阅测试完成!')
- }
- // 代理状态检查
- async function checkProxyStatus() {
- console.log('🔍 代理状态检查:')
- 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(` 代理用户: ${proxyConfig.user ? proxyConfig.user.substring(0, 4) + '***' : '未配置'}`)
- console.log(` 会话前缀: ${proxyConfig.hasSessionPrefix ? '✅' : '❌'}`)
- console.log(` 会话后缀: ${proxyConfig.hasSessionSuffix ? '✅' : '❌'}`)
- console.log(' 账户配置:')
- console.log(` 账户1: ${process.env.PACIFICA_ACCOUNT_1 ? process.env.PACIFICA_ACCOUNT_1.substring(0, 8) + '...' : '未配置'}`)
- console.log(` 账户2: ${process.env.PACIFICA_ACCOUNT_2 ? process.env.PACIFICA_ACCOUNT_2.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(() => checkProxyStatus())
- .then(() => testWebSocketAccountSubscription())
- .catch(error => {
- console.error('🚨 测试失败:', error)
- process.exit(1)
- })
- }
- export { testWebSocketAccountSubscription }
|