Back
portfolio demo
Labs

Realtime Crypto Dashboard

Live BTC, ETH, and SOL price streaming via Binance WebSocket API. Demonstrates high-frequency UI updates, canvas-based data visualization, and WebSocket architecture with auto-reconnect.

WebSocketCanvas 2DRAF AnimationReact RefsAuto-reconnectZero-rerender ChartTime Buckets
realtime-chart.tsx
live
BTC / USDT1 min window
debug//ws stream
disconnected
endpointwss://stream.binance.com
streamsbtc / eth / sol @trade
msg/sec
latency
total msg
performance notes
  • Chart renders via Canvas 2D — no React re-renders
  • Timestamped price ticks stored in useRef
  • Aggregated into 80 time-buckets per frame
  • X axis = time → smooth scroll, no index-jump
  • State updates throttled to ~5 fps for price cards
  • WebSocket singleton shared, auto-reconnects on drop

architecture

CryptoSocketService
src/services/cryptoSocket.ts
  • ·Singleton WebSocket manager
  • ·Exponential back-off reconnect
  • ·Parses Binance trade stream events
  • ·Tracks MPS & latency stats
useCryptoTicker()
src/hooks/use-crypto-ticker.ts
  • ·Subscribes to socket service
  • ·Rolling history buffer in useRef
  • ·Throttled state → price-card UI
  • ·Dirty flags for chart RAF loop
CryptoChart
src/components/labs/crypto-chart.tsx
  • ·Canvas 2D rendering
  • ·requestAnimationFrame loop
  • ·Reads from history ref directly
  • ·Zero React state — zero re-renders

Live data from Binance WebSocket API — public stream, no API key required.