test_websocket_subscription.ts 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import { PacificaWebSocketClient } from './src/exchanges/pacifica/PacificaWebSocketClient.js'
  2. import { PacificaWebSocketAdapter } from './src/exchanges/pacifica/PacificaWebSocketAdapter.js'
  3. import { logger } from './src/utils/logger.js'
  4. /**
  5. * 测试Pacifica WebSocket订阅功能
  6. * 专门测试account_info和account_positions订阅
  7. */
  8. async function testWebSocketSubscriptions() {
  9. console.log('🚀 开始Pacifica WebSocket订阅测试...\n')
  10. const adapter = new PacificaWebSocketAdapter('wss://ws.pacifica.fi/ws')
  11. const testAccount = process.env.PACIFICA_ACCOUNT_1 || '3v2fE8y6uPVu5pmNCpmygpGNgdP3kGL3SMoVa86uvLLu'
  12. try {
  13. console.log('📡 初始化WebSocket适配器...')
  14. await adapter.initialize()
  15. console.log('✅ 适配器初始化成功!')
  16. console.log(`🔗 连接状态: ${adapter.isConnected()}`)
  17. // 测试1: 账户余额订阅
  18. console.log('\n💰 测试账户余额订阅...')
  19. try {
  20. const balanceResult = await adapter.getBalances(testAccount)
  21. if (balanceResult.success) {
  22. console.log('✅ 账户余额订阅成功!')
  23. console.log('📊 余额数据:', {
  24. balance: balanceResult.data?.balance,
  25. available: balanceResult.data?.available,
  26. equity: balanceResult.data?.equity,
  27. marginUsed: balanceResult.data?.marginUsed,
  28. })
  29. } else {
  30. console.log('❌ 账户余额订阅失败:', balanceResult.error)
  31. }
  32. } catch (error: any) {
  33. console.log('❌ 账户余额订阅异常:', error.message)
  34. }
  35. // 测试2: 账户仓位订阅
  36. console.log('\n📊 测试账户仓位订阅...')
  37. try {
  38. const positionsResult = await adapter.getPositions(testAccount)
  39. if (positionsResult.success) {
  40. console.log('✅ 账户仓位订阅成功!')
  41. console.log('📊 仓位数据:', positionsResult.data)
  42. } else {
  43. console.log('❌ 账户仓位订阅失败:', positionsResult.error)
  44. }
  45. } catch (error: any) {
  46. console.log('❌ 账户仓位订阅异常:', error.message)
  47. }
  48. // 测试3: 连接状态检查
  49. console.log('\n🔍 连接状态检查:')
  50. console.log(` WebSocket连接: ${adapter.isConnected() ? '✅ 已连接' : '❌ 断开'}`)
  51. console.log(` 消息队列长度: ${adapter.getQueueLength()}`)
  52. } catch (error: any) {
  53. console.error('❌ 测试过程中发生错误:', error.message)
  54. console.error('错误详情:', error)
  55. } finally {
  56. // 清理资源
  57. try {
  58. await adapter.close()
  59. console.log('\n🧹 资源清理完成')
  60. } catch (error: any) {
  61. console.log('⚠️ 资源清理时发生错误:', error.message)
  62. }
  63. }
  64. console.log('\n✅ Pacifica WebSocket订阅测试完成!')
  65. }
  66. // 代理状态测试
  67. async function testProxySubscriptionStatus() {
  68. console.log('\n🔍 代理订阅状态检查:')
  69. const proxyConfig = {
  70. enabled: process.env.PROXY_ENABLED === 'true',
  71. host: process.env.PROXY_HOST,
  72. port: process.env.PROXY_PORT,
  73. user: process.env.ASTER_PROXY_USER,
  74. hasSessionPrefix: !!process.env.ASTER_PROXY_SESSION_PREFIX,
  75. hasSessionSuffix: !!process.env.ASTER_PROXY_SESSION_SUFFIX,
  76. }
  77. console.log(' 配置状态:')
  78. console.log(` 代理启用: ${proxyConfig.enabled ? '✅' : '❌'}`)
  79. console.log(` 代理主机: ${proxyConfig.host || '未配置'}`)
  80. console.log(` 代理端口: ${proxyConfig.port || '未配置'}`)
  81. console.log(` 测试账户: ${process.env.PACIFICA_ACCOUNT_1?.substring(0, 8) + '...' || '未配置'}`)
  82. if (proxyConfig.enabled && proxyConfig.host && proxyConfig.user) {
  83. console.log(' ✅ 代理配置完整,支持WebSocket订阅测试')
  84. } else {
  85. console.log(' ⚠️ 代理配置不完整,WebSocket可能直连')
  86. }
  87. }
  88. // 运行测试
  89. if (import.meta.url === `file://${process.argv[1]}`) {
  90. Promise.resolve()
  91. .then(() => testProxySubscriptionStatus())
  92. .then(() => testWebSocketSubscriptions())
  93. .catch(error => {
  94. console.error('🚨 测试失败:', error)
  95. process.exit(1)
  96. })
  97. }
  98. export { testWebSocketSubscriptions }