Skip to main content
Glama
test-websocket-urls.js5.79 kB
#!/usr/bin/env node /** * Test Zetrix WebSocket URLs * Compares old and new URL formats */ import { ZetrixWebSocketClient } from './dist/zetrix-websocket.js'; const COLORS = { reset: '\x1b[0m', green: '\x1b[32m', red: '\x1b[31m', yellow: '\x1b[33m', blue: '\x1b[34m', cyan: '\x1b[36m', }; function log(color, symbol, message) { console.log(`${color}${symbol}${COLORS.reset} ${message}`); } function success(message) { log(COLORS.green, '✓', message); } function error(message) { log(COLORS.red, '✗', message); } function info(message) { log(COLORS.blue, 'ℹ', message); } function section(message) { console.log(`\n${COLORS.cyan}${'='.repeat(60)}${COLORS.reset}`); console.log(`${COLORS.cyan}${message}${COLORS.reset}`); console.log(`${COLORS.cyan}${'='.repeat(60)}${COLORS.reset}\n`); } async function testWebSocketURL(url, name) { info(`Testing: ${url}`); const client = new ZetrixWebSocketClient(url); try { const response = await Promise.race([ client.registerAndConnect(), new Promise((_, reject) => setTimeout(() => reject(new Error('Connection timeout')), 10000) ) ]); success(`${name} - Connected successfully!`); console.log(` Blockchain version: ${response.buchain_version}`); console.log(` Ledger version: ${response.ledger_version}`); console.log(` Node address: ${response.self_addr}`); client.disconnect(); return { success: true, url, name, response }; } catch (err) { error(`${name} - Failed: ${err.message}`); client.disconnect(); return { success: false, url, name, error: err.message }; } } async function main() { console.log(`${COLORS.cyan} ╔═══════════════════════════════════════════════════════════╗ ║ ║ ║ Zetrix WebSocket URL Comparison Test ║ ║ ║ ╚═══════════════════════════════════════════════════════════╝ ${COLORS.reset}`); const tests = [ // Old URLs { url: 'ws://node.zetrix.com:7053', name: 'Mainnet (OLD - node.zetrix.com:7053)' }, { url: 'ws://test-node.zetrix.com:7053', name: 'Testnet (OLD - test-node.zetrix.com:7053)' }, // New URLs with default port { url: 'ws://node-ws.zetrix.com', name: 'Mainnet (NEW - node-ws.zetrix.com)' }, { url: 'ws://test-node-ws.zetrix.com', name: 'Testnet (NEW - test-node-ws.zetrix.com)' }, // New URLs with explicit port 7053 { url: 'ws://node-ws.zetrix.com:7053', name: 'Mainnet (NEW - node-ws.zetrix.com:7053)' }, { url: 'ws://test-node-ws.zetrix.com:7053', name: 'Testnet (NEW - test-node-ws.zetrix.com:7053)' }, // New URLs with port 80 (default WS) { url: 'ws://node-ws.zetrix.com:80', name: 'Mainnet (NEW - node-ws.zetrix.com:80)' }, { url: 'ws://test-node-ws.zetrix.com:80', name: 'Testnet (NEW - test-node-ws.zetrix.com:80)' }, ]; const results = []; for (const test of tests) { section(test.name); const result = await testWebSocketURL(test.url, test.name); results.push(result); // Wait a bit between tests await new Promise(resolve => setTimeout(resolve, 1000)); } section('Summary'); const successful = results.filter(r => r.success); const failed = results.filter(r => !r.success); console.log(`${COLORS.green}Successful connections: ${successful.length}${COLORS.reset}`); successful.forEach(r => { console.log(` ✓ ${r.name}`); console.log(` URL: ${r.url}`); }); console.log(`\n${COLORS.red}Failed connections: ${failed.length}${COLORS.reset}`); failed.forEach(r => { console.log(` ✗ ${r.name}`); console.log(` URL: ${r.url}`); console.log(` Error: ${r.error}`); }); section('Recommendation'); if (successful.length > 0) { console.log('Working WebSocket URLs found!\n'); // Find the best URLs (prefer new URLs without explicit port) const mainnetNew = successful.find(r => r.url === 'ws://node-ws.zetrix.com'); const testnetNew = successful.find(r => r.url === 'ws://test-node-ws.zetrix.com'); const mainnetNewWithPort = successful.find(r => r.url === 'ws://node-ws.zetrix.com:7053'); const testnetNewWithPort = successful.find(r => r.url === 'ws://test-node-ws.zetrix.com:7053'); const mainnetOld = successful.find(r => r.url === 'ws://node.zetrix.com:7053'); const testnetOld = successful.find(r => r.url === 'ws://test-node.zetrix.com:7053'); console.log('Recommended configuration:\n'); const mainnetUrl = mainnetNew?.url || mainnetNewWithPort?.url || mainnetOld?.url; const testnetUrl = testnetNew?.url || testnetNewWithPort?.url || testnetOld?.url; console.log(`${COLORS.cyan}Mainnet:${COLORS.reset} ${mainnetUrl}`); console.log(`${COLORS.cyan}Testnet:${COLORS.reset} ${testnetUrl}`); if (mainnetNew || testnetNew) { success('\nNew URLs work! No explicit port needed.'); } else if (mainnetNewWithPort || testnetNewWithPort) { info('\nNew URLs work with port 7053.'); } else { info('\nOld URLs are working. New URLs may not be available yet.'); } } else { error('No working WebSocket URLs found!'); console.log('\nPossible issues:'); console.log(' - Firewall blocking connections'); console.log(' - Network connectivity issues'); console.log(' - WebSocket servers may be down'); } console.log(); } main().catch((err) => { error(`Fatal error: ${err.message}`); console.error(err); process.exit(1); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Zetrix-Chain/zetrix-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server