import { DomeWebSocket } from '@dome-api/sdk';
const ws = new DomeWebSocket('YOUR_API_KEY', {
autoReconnect: true,
reconnectInterval: 5000,
maxReconnectAttempts: 10
});
// Track subscriptions
const subscriptions = new Map<string, any>();
// Connection handlers
ws.on('open', async () => {
console.log('✅ Connected to Dome API WebSocket');
// Subscribe to orders
try {
const sub = await ws.subscribe({
platform: 'polymarket',
version: 1,
type: 'orders',
filters: {
users: [
'0x6031b6eed1c97e853c6e0f03ad3ce3529351f96d',
'0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b'
]
}
});
subscriptions.set(sub.subscription_id, {
platform: 'polymarket',
version: 1,
type: 'orders',
filters: {
users: [
'0x6031b6eed1c97e853c6e0f03ad3ce3529351f96d',
'0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b'
]
}
});
console.log('📡 Subscribed:', sub.subscription_id);
} catch (error) {
console.error('❌ Subscription failed:', error);
}
});
ws.on('error', (error) => {
console.error('❌ WebSocket error:', error);
});
ws.on('close', () => {
console.log('🔌 Disconnected from WebSocket');
});
ws.on('reconnect', async () => {
console.log('🔄 Reconnected, restoring subscriptions...');
// Restore all subscriptions
for (const [subId, config] of subscriptions.entries()) {
try {
const sub = await ws.subscribe(config);
console.log('📡 Restored subscription:', sub.subscription_id);
} catch (error) {
console.error('❌ Failed to restore subscription:', error);
}
}
});
// Handle order events
ws.on('event', (event) => {
const order = event.data;
console.log('\n📦 New Order Event:');
console.log(` Subscription: ${event.subscription_id}`);
console.log(` User: ${order.user}`);
console.log(` Side: ${order.side}`);
console.log(` Shares: ${order.shares_normalized}`);
console.log(` Price: ${order.price}`);
console.log(` Market: ${order.market_slug}`);
console.log(` Title: ${order.title}`);
console.log(` Timestamp: ${new Date(order.timestamp * 1000).toISOString()}`);
});
// Graceful shutdown
process.on('SIGINT', async () => {
console.log('\n🛑 Shutting down...');
// Unsubscribe from all
for (const subId of subscriptions.keys()) {
try {
await ws.unsubscribe(subId);
console.log('✅ Unsubscribed:', subId);
} catch (error) {
console.error('❌ Unsubscribe failed:', error);
}
}
// Disconnect
await ws.disconnect();
process.exit(0);
});