疑难解答

币安WebSocket实时数据流怎么接入?

发布于 2026-03-23 | 4 分钟

币安WebSocket实时数据流的接入方法、可用数据类型、连接管理和常见问题解决,适合需要实时行情数据的开发者。

想获取币安的实时行情数据?WebSocket是最好的方式——低延迟、不消耗REST API权重、数据实时推送。

WebSocket基础

WebSocket是一种双向通信协议。和HTTP请求不同,WebSocket建立连接后可以持续接收服务器推送的数据,不需要你反复发请求。

在加密货币交易中,WebSocket主要用于获取:

  • 实时价格
  • 实时成交记录
  • 深度数据(订单簿)
  • K线数据
  • 账户信息变化

币安WebSocket端点

注册币安后,币安提供以下WebSocket端点:

公共数据流(不需要API Key)

基础端点wss://stream.binance.com:9443/ws/<streamName>

组合端点wss://stream.binance.com:9443/stream?streams=<stream1>/<stream2>

用户数据流(需要API Key)

需要先通过REST API创建一个listenKey,然后用这个key连接WebSocket获取你的账户实时数据。

可用的公共数据流

逐笔交易(Trade)

获取某个交易对的每一笔成交记录。

  • 流名称:btcusdt@trade
  • 数据:价格、数量、买卖方向、时间

K线数据(Kline)

获取实时K线更新。

  • 流名称:btcusdt@kline_1m(1分钟K线)
  • 支持多种周期:1m、5m、15m、1h、4h、1d等

深度数据(Depth)

获取订单簿变化。

  • 流名称:btcusdt@depthbtcusdt@depth@100ms
  • 数据:买卖挂单的变化

24小时行情统计

获取某个或所有交易对的24小时统计数据。

  • 流名称:btcusdt@ticker!ticker@arr(所有交易对)

最新价格

获取某个或所有交易对的最新成交价。

  • 流名称:btcusdt@miniTicker

用户数据流

获取你账户的实时信息:

  1. 通过REST API调用POST /api/v3/userDataStream获取listenKey
  2. 连接WebSocket:wss://stream.binance.com:9443/ws/<listenKey>
  3. 接收实时推送:
    • 账户余额变化
    • 订单状态更新
    • 成交通知

注意:listenKey每60分钟需要续期一次(通过PUT请求),否则连接会断开。

连接管理要点

心跳机制

  • 每3分钟发送一次ping,服务器会回复pong
  • 如果超过一定时间没有收到pong,需要重新连接

断线重连

网络不稳定时连接可能断开。你的程序需要实现自动重连逻辑:

  • 检测到连接断开
  • 等待短暂时间(1-5秒)
  • 重新建立连接
  • 重新订阅数据流

订阅数量限制

  • 单个连接最多200个数据流
  • 需要更多的话,建立多个连接

常见问题

Q:WebSocket数据有延迟吗? 正常情况下延迟在几十毫秒到几百毫秒之间,取决于你的网络到币安服务器的距离。

Q:用Python怎么连接? 可以使用websocket-clientwebsockets库。也有现成的Python币安SDK(如python-binance)封装了WebSocket功能。

Q:能同时订阅现货和合约吗? 现货和合约用不同的端点。合约WebSocket端点是wss://fstream.binance.com/ws/<streamName>

Q:有数据丢失怎么办? WebSocket不保证100%不丢数据。在断线重连后,可以用REST API补充缺失的数据。

如果你还没安装APP可以先下载币安APP

总结

币安WebSocket提供丰富的实时数据流,包括行情、深度、K线和用户数据。接入简单,延迟低,不消耗REST API权重。注意做好心跳保活和断线重连。对于需要实时数据的量化交易和数据分析来说,WebSocket是必备工具。

现在就开始使用币安

通过专属推荐链接注册,永久享受交易手续费减免优惠

立即注册 下载APP