Chuyển tới nội dung chính
Chưa có bản tiếng Việt
Trang này hiện chỉ có bằng tiếng Anh. Các bài trong mục Production patterns đã được dịch.

WebSocket Gateway API Design

thông tin

Reference API designs from Binance and HashKey WebSocket endpoints.


Endpoints​

Binance​

Spot​

  • wss://stream.binance.com:443
  • Raw stream: /ws/<streamName>
  • Combined streams: /stream?streams=<streamName1>/<streamName2>/<streamName3>

USD-M Futures​

  • Base: wss://ws-fapi.binance.com/ws-fapi/v1
  • Market Data:
  • Raw stream: wss://fstream.binance.com/ws/bnbusdt@aggTrade
  • Combined: wss://fstream.binance.com/stream?streams=bnbusdt@aggTrade/btcusdt@markPrice
  • User Data Stream:
  • wss://fstream.binance.com/ws/<listenKey>

Coin-M Futures​

  • Base: wss://ws-dapi.binance.com/ws-dapi/v1
  • Market Data:
  • wss://dstream.binance.com/ws/bnbusdt@aggTrade
  • wss://dstream.binance.com/stream?streams=bnbusdt@aggTrade/btcusdt@markPrice
  • User Data Stream:
  • wss://dstream.binance.com/ws/<listenKey>

HashKey​

StreamEndpoint
Public (v1)wss://stream-glb.sim.hashkeydev.com/quote/ws/v1
Privatewss://stream-glb.sim.hashkeydev.com/api/v1/ws/{listenKey}
Public (v2, public only)wss://stream-glb.sim.hashkeydev.com/quote/ws/v2

WebSocket API General Info​

Connection Rules
  • Base endpoint: wss://ws-fapi.binance.com/ws-fapi/v1
  • Testnet: wss://testnet.binancefuture.com/ws-fapi/v1
  • Connections are valid for 24 hours — expect disconnection after that

Ping/Pong​

  • Server sends a ping frame every 3 minutes
  • If no pong is received within 10 minutes, connection is disconnected
  • On receiving ping, send pong with a copy of ping's payload immediately
  • Unsolicited pong frames are allowed but won't prevent disconnection (recommend empty payload)

General Rules​

  • Signature payload: all request params (except signature) sorted alphabetically by name
  • Lists returned in chronological order unless noted otherwise
  • All timestamps in milliseconds (UTC) unless noted otherwise
  • All field names and values are case-sensitive
  • INT parameters (e.g., timestamp): expected as JSON integers
  • DECIMAL parameters (e.g., price): expected as JSON strings
  • Private streams require a separate WebSocket connection

Heartbeat Check​

Client initiates a periodic heartbeat message (ping) every 10 seconds to keep the connection alive.


Public Streams​

Spot Topics​

TopicKey
Klinekline_$interval (e.g., kline_15m)
Realtimesrealtimes
Tradetrade
Depthdepth
BBO (Best Bid/Offer)bbo

Futures Public Topics​

Endpoint: wss://bws-glb.global.sim.hashkeydev.com/ws/quote/v1?lang=en-us

Topic
diffMergedDepth
trade
markPrice
index
kline_15m
ghi chú

Spot and Futures symbols are available on the same stream.


Private Streams (User Data Streams)​

ListenKey Lifecycle​

OperationEffect
POSTCreates a new listenKey (valid for 60 min). If active key exists, returns it and extends validity
PUTResets validity to 60 minutes
DELETECloses the stream and invalidates the listenKey

Rules​

  • One user has one listenKey at a time, used for all private streams
  • Payloads are guaranteed to be in order during heavy periods — use E (event time) field for ordering
  • Connections valid for 24 hours

Spot Private Topics​

Topic
order
balance

Futures Private Topics​

Endpoint: wss://bws-glb.global.sim.hashkeydev.com/api/ws/user?lang=en-us&orgId=9001

Topic
futures_position
futures_tradeable
futures_order
futures_symbol_suspend_plan
balance
futures_plan_order

General Private Topics​

Topic
Account Update
Order Update
Ticket Push
Position Push