| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import { PacificaWebSocketAdapter } from './src/exchanges/pacifica/PacificaWebSocketAdapter.js'
- import { logger } from './src/utils/logger.js'
- /**
- * 测试新的WebSocket订阅模式
- * 验证实时数据流功能
- */
- async function testWebSocketSubscriptions() {
- console.log('🚀 开始测试WebSocket订阅模式...\n')
- const testAccount = process.env.PACIFICA_ACCOUNT_1
- const testPrivateKey = process.env.PACIFICA_PRIVATE_KEY_1
- if (!testAccount || !testPrivateKey) {
- console.log('⚠️ 环境变量未配置,跳过测试')
- return
- }
- console.log(`📊 测试账户: ${testAccount.substring(0, 8)}...`)
- console.log(`🔑 私钥: ${testPrivateKey.substring(0, 8)}...`)
- try {
- // 创建WebSocket适配器
- const wsAdapter = new PacificaWebSocketAdapter(
- 'wss://ws.pacifica.fi/ws',
- testAccount,
- testPrivateKey
- )
- // 设置事件监听器
- wsAdapter.on('prices', (data: any) => {
- console.log('💰 收到价格数据:', Object.keys(data).slice(0, 3), '...')
- })
- wsAdapter.on('balance', (data: any) => {
- console.log('💳 收到账户余额数据:', data)
- })
- wsAdapter.on('positions', (data: any) => {
- console.log('📊 收到仓位数据:', data)
- })
- wsAdapter.on('orderbook', (data: any) => {
- console.log('📈 收到订单簿数据:', data.symbol, `${data.bids?.length || 0}买单, ${data.asks?.length || 0}卖单`)
- })
- // 初始化连接
- console.log('\n📡 初始化WebSocket连接...')
- await wsAdapter.initialize()
- console.log('✅ WebSocket连接已建立')
- // 测试价格订阅
- console.log('\n💰 启动价格数据订阅...')
- const pricesResult = await wsAdapter.getPrices(['BTC', 'ETH'])
- console.log('价格订阅结果:', pricesResult.success ? '✅ 成功' : '❌ 失败', pricesResult.data?.message)
- // 测试订单簿订阅
- console.log('\n📈 启动BTC订单簿订阅...')
- const orderbookResult = await wsAdapter.getOrderBook('BTC')
- console.log('订单簿订阅结果:', orderbookResult.success ? '✅ 成功' : '❌ 失败')
- // 测试账户余额订阅
- console.log('\n💳 启动账户余额订阅...')
- const balanceResult = await wsAdapter.getBalances(testAccount)
- console.log('余额订阅结果:', balanceResult.success ? '✅ 成功' : '❌ 失败', balanceResult.data?.message)
- // 测试账户仓位订阅
- console.log('\n📊 启动账户仓位订阅...')
- const positionsResult = await wsAdapter.getPositions(testAccount)
- console.log('仓位订阅结果:', positionsResult.success ? '✅ 成功' : '❌ 失败', positionsResult.data?.message)
- // 等待接收数据
- console.log('\n⏰ 等待15秒接收实时数据...')
- await new Promise(resolve => setTimeout(resolve, 15000))
- console.log('\n🔍 WebSocket连接状态检查:')
- console.log(` 连接状态: ${wsAdapter.isConnected() ? '✅ 已连接' : '❌ 断开'}`)
- // 清理资源
- console.log('\n🧹 清理资源...')
- await wsAdapter.close()
- console.log('✅ 资源清理完成')
- } catch (error: any) {
- console.error('❌ 测试过程中发生错误:', error.message)
- }
- console.log('\n✅ WebSocket订阅测试完成!')
- }
- // 运行测试
- if (import.meta.url === `file://${process.argv[1]}`) {
- testWebSocketSubscriptions().catch(error => {
- console.error('🚨 测试失败:', error)
- process.exit(1)
- })
- }
- export { testWebSocketSubscriptions }
|