Skip to content

v1.1 — Migrate to Binance /market/stream WebSocket endpoint

Latest

Choose a tag to compare

@0xcathiefish 0xcathiefish released this 03 May 04:25

Summary

Update the realtime kline collector to use Binance's new market-data WebSocket endpoint. The legacy wss://fstream.binance.com/stream URL was permanently decommissioned by Binance on 2026-04-23 (Important WebSocket Change Notice). After the deadline, connections to the legacy URL still complete the WebSocket handshake but the server silently withholds all kline_* push frames, causing realtime updates to stop while historical REST sync still works.

What changed

  • backend/src/binance_collector.rs:307 — switched the combined-stream URL from
    wss://fstream.binance.com/stream?streams=...
    to
    wss://fstream.binance.com/market/stream?streams=...

kline_* streams now belong to the /market routing class per Binance's new endpoint structure (/public, /market, /private). Combined-stream syntax (?streams=a@kline_1m/b@kline_1m) is unchanged.

Symptoms this fixes

  • Frontend chart stops receiving realtime candle updates after backend restart.
  • Watchlist last price stuck at 0.00.
  • Backend logs show WS 0 connected with 17 symbols but no further collector activity (no errors, no reconnects).
  • DB only contains candles from the REST API historical sync — no realtime closed candles after the connect.

Verification

After deploying v1.1, the latest closed candle in the DB advances every minute in lockstep with wall-clock UTC, and the frontend chart and watchlist resume realtime updates.

Container image

  • ghcr.io/exchanges-lab/view/backend:v1.1 (digest sha256:927c727961510de28190712cdcdf32dc1800e954444eacd1c28773d7df9b5ac6)
  • ghcr.io/exchanges-lab/view/backend:latest points to the same digest
  • Previous stable: v1.0 (digest sha256:1c25c0057f85ae97e9488d20c70c975a8fc5bb3083ad73a32c77a9878197966b) retained as a rollback point