LogoDocumentación
Binance22 min read

Real-time Integration

Real-time data streaming with Extension features

Extension Team

Extension Team

Última actualización:2/20/2024

Real-time Integration

Learn how to implement real-time data streaming in your applications using Neura Extensions.

WebSocket Connection

Establishing Connection

import { NeuraWebSocket } from '@neura/extensions';

const ws = new NeuraWebSocket({
  apiKey: 'your-api-key'
});

ws.connect();

Subscribing to Channels

// Price updates
ws.subscribe('prices', ['BTC/USD', 'ETH/USD']);

// Order book updates
ws.subscribe('orderbook', 'BTC/USD');

// Trade stream
ws.subscribe('trades', 'BTC/USD');

Handling Messages

ws.on('price', (data) => {
  console.log(`${data.symbol}: $${data.price}`);
});

ws.on('trade', (data) => {
  console.log(`Trade: ${data.side} ${data.amount} @ ${data.price}`);
});

ws.on('orderbook', (data) => {
  updateOrderBookUI(data);
});

Connection Management

Reconnection

ws.on('disconnect', () => {
  console.log('Disconnected, attempting reconnect...');
});

ws.on('reconnect', () => {
  console.log('Reconnected successfully');
  // Re-subscribe to channels
});

Heartbeat

The connection sends automatic heartbeats to maintain the connection.

Best Practices

  1. Handle disconnections gracefully
  2. Implement exponential backoff for reconnects
  3. Process messages asynchronously
  4. Use message queuing for high-frequency data
  5. Monitor connection health

Example: Real-time Price Ticker

const prices = {};

ws.subscribe('prices', ['BTC/USD', 'ETH/USD', 'SOL/USD']);

ws.on('price', (data) => {
  prices[data.symbol] = {
    price: data.price,
    change: data.change24h,
    timestamp: Date.now()
  };
  
  updateUI(prices);
});

Rate Limits

  • Maximum 10 subscriptions per connection
  • 1 message per 100ms per channel
  • Premium users: unlimited subscriptions