| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- 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 }
|